Oppure

Loading
21/08/06 11:02
Fr3d3R!K
ciao a tutti c'ho n piccolo problemino...ho creato un semplice form per mandare una mail ma da ore ci combatto perchè mi da un errore che proprio non capisco...ecco intanto i codici:
Scrivimi.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>scrivimi</title>
<link rel=stylesheet href="style.css" type="text/css">
</head>
<body>
<p>In questa pagina potrai scrivermi per consigli, richieste, avvisi di garanzia. Basta che indichi il tuo nome (o nickname &egrave; uguale) e la tua email (per poterti
   rispondere). Scrivi il messaggio e clicca su Invia!. Ti ricordo che tutti i campi per i motivi sopra citati sono obbligatori e nel caso dovessi scordarti di scriverne uno
   verrai avvisato di completarlo.</p>
<form name="scrivimi" action="send.php" method="post" enctype="text/plain">
<p><b>Tuo Nome</b> &nbsp;<input type="text" name="nome" id="nome" size="30" maxlength="30"></p>
<p><b>Tua E-mail</b> &nbsp;<input type="text" name="mail" id="mail" size="50" maxlenght="30"></p>
<p><b>Messaggio</b></p><textarea name="messaggio" cols="80" rows="15" id="messaggio"></textarea><br><br>
<input type="submit" value=" Invia! ">&nbsp;&nbsp;<input type="reset" value=" Cancella tutto! ">
</form>
</body>
</html>

send.php
<?php
  $nome=$_POST['nome'];
  $mail=$_POST['mail'];
  $messaggio=$_POST['messaggio'];
  if($nome=="" && $mail=="" && $messaggio=="")
  {
     echo"Hai dimenticato di compilare qualche campo!<br>";
     echo"<a href=\"javascript:history.back()\" target=\"_self\">Torna indietro</a>";
  }
  else
  {
     $oggetto="$nome ti ha mandato un messaggio da A Passion Called Linux";
     $intestazione="Rispondi a:<$mail>\n";
     $destinatario="miamail@miamail.com";
     mail($destinatario,$oggetto,"$messaggio",$intestazione);
     if(mail($destinatario,$oggetto,"$messaggio",$intestazione))
        echo"mail inviata correttamente! Grazie per aver usato questo servizio";
     else
        echo"Si è verificato un imprevisto e la mail non è stata mandata. Se puoi riprova più tardi. Grazie";
  }
  header("Location: scrivimi.html");
?>

ps: ho sostituito la mail con un nome fittizio prima che qualche spammers tramite motori di ricerca la trova... :)
l'errore che mi da provandolo su easyphp è:
Notice: Undefined index: nome in c:\programmi\easyphp1-8\www\pages\send.php on line 2

Notice: Undefined index: mail in c:\programmi\easyphp1-8\www\pages\send.php on line 3

Notice: Undefined index: messaggio in c:\programmi\easyphp1-8\www\pages\send.php on line 4
Hai dimenticato di compilare qualche campo!
Torna indietro
Warning: Cannot modify header information - headers already sent by (output started at c:\programmi\easyphp1-8\www\pages\send.php:2) in c:\programmi\easyphp1-8\www\pages\send.php on line 21

mi date una mano?? grazie in anticipo ciao a tutti
Fr3d3R!K
aaa
21/08/06 12:05
Fr3d3R!K
non vi affollate uno alla volta...
aaa
01/09/06 12:52
radio
l'errore headers alredy sent è perchè gli headers vanno inviati dal server per prima coa quando un borwser richiede una pagina quindi non puoi metterli dopo aver già scrtto anche solo un carattere di testo perchè per inviare quel carattere il server inizia automaticamete la trasmissione degli headers.

se vuoi rimandare l'utente alla pagina d prima o metti l'header prima oppure usi i JS.

Eppoi non arrivavano i dati dal post (per vederlo bastava provare un VAR_DUMP($_POST) con enctype="text/plain", quindi ho messo multipart form data, poi la tua e-mail veniva invata due volte!!

insomma...

SEND.PHP
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 
 <meta name="author"
 	content="Radio">
 <meta http-equiv="Content-Type"
 	content="text/html; charset=iso-8859-15">
 
 <title>scrivimi</title>
 
 <link rel=stylesheet href="style.css" type="text/css">
 
 </head>

<body>
<?php
$nome=$_POST['nome'];
$mail=$_POST['mail'];
$messaggio=$_POST['messaggio'];

if (empty($nome) || empty($mail) || empty($messaggio)) // OR not AND se no da errore solo se sono vuoti TUTTI E TRE!
	print("
	<h1>ERRORE</h1>
	
	Hai dimenticato di compilare qualche campo!<br>
	<a href=\"javascript:history.back()\" target=\"_self\">Torna indietro!</a>");
else
	{
	$oggetto="$nome ti ha mandato un messaggio da A Passion Called Linux";
	$intestazione="Rispondi a:<$mail>\n";
	$destinatario="dariocambie@gmail.com";
	
	$email=@mail($destinatario,$oggetto,"$messaggio",$intestazione); // metto la chiocciola per naconodere gli erori, che tanto gestisco dopo.
	
	if ($email) // come avevi messo tu l'e-mail veniva inviata 2 volte
		echo "Mail inviata correttamente!<br />Grazie per aver usato questo servizio!";
	else
		echo "Si è verificato un imprevisto e la mail non è stata inviata.<br />Se puoi riprova più tardi.<br />Grazie";
	}
//header("Location: scrivimi.html");
// Questo non poteva essere messo perchè gli headers erano già stati spediti!

?>
</body>
</html>


[b]SCRIVIMI.HTML[/B]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
 
 <meta name="author"
 	content="Radio">
 <meta http-equiv="Content-Type"
 	content="text/html; charset=iso-8859-15">
 
 <title>scrivimi</title>
 
 <link rel=stylesheet href="style.css" type="text/css">
 
 </head>

<body>
<h1>Scrivimi!</h1>
<p>
In questa pagina potrai scrivermi per consigli, richieste, avvisi di garanzia, basta che indichi il tuo nome (o nickname è uguale) e la tua email (per poterti
rispondere).<br />
Scrivi il messaggio e clicca su Invia!.<br />
Ti ricordo che tutti i campi per i motivi sopra citati sono obbligatori e nel caso dovessi scordarti di scriverne uno
verrai avvisato di completarlo.
</p>

<form action="send.php" method="POST" enctype="multipart/form-data">
<!-- NO, non è più text/plain ;-) -->

	<b>Tuo Nome:</b>&nbsp;&nbsp;
		<input type="text" name="nome"  size="30" maxlength="30"><br />

	<b>Tua E-mail:</b>&nbsp;&nbsp;
		<input type="text" name="mail" id="mail" size="50" maxlength="30"><br />

	<b>Messaggio:</b>&nbsp;&nbsp;
		<textarea name="messaggio" cols="80" rows="15"></textarea><br />
<br />
  <div align="center">
	<input type="submit" value=" Invia! ">&nbsp;&nbsp;<input type="reset" value=" Cancella tutto! ">
  </div>
</form>

</body>
</html>



Per maggiori info sono sempre a disposizione ;-)
Ultima modifica effettuata da radio 01/09/06 20:41
aaa
12/09/06 11:27
Fr3d3R!K
scusa se ti rispondo ora ma non avevo ricevuto mail e non mi ero più accorto di questo messaggio :D ....cmq grazie va tutto a posto...per gli and al posto degli or...quello era un errore di distrazione! :D
ciao ciao
aaa