Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
PHP - Form Mail manco col legno
Forum - PHP - Form Mail manco col legno

Avatar
Fr3d3R!K (Ex-Member)
Expert


Messaggi: 589
Iscritto: 17/08/2006

Segnala al moderatore
Postato alle 13:02
Lunedì, 21/08/2006
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
Codice sorgente - presumibilmente PHP

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4. <title>scrivimi</title>
  5. <link rel=stylesheet href="style.css" type="text/css">
  6. </head>
  7. <body>
  8. <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
  9.    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
  10.    verrai avvisato di completarlo.</p>
  11. <form name="scrivimi" action="send.php" method="post" enctype="text/plain">
  12. <p><b>Tuo Nome</b>  <input type="text" name="nome" id="nome" size="30" maxlength="30"></p>
  13. <p><b>Tua E-mail</b>  <input type="text" name="mail" id="mail" size="50" maxlenght="30"></p>
  14. <p><b>Messaggio</b></p><textarea name="messaggio" cols="80" rows="15" id="messaggio"></textarea><br><br>
  15. <input type="submit" value=" Invia! ">  <input type="reset" value=" Cancella tutto! ">
  16. </form>
  17. </body>
  18. </html>


send.php
Codice sorgente - presumibilmente Php

  1. <?php
  2.   $nome=$_POST['nome'];
  3.   $mail=$_POST['mail'];
  4.   $messaggio=$_POST['messaggio'];
  5.   if($nome=="" && $mail=="" && $messaggio=="")
  6.   {
  7.      echo"Hai dimenticato di compilare qualche campo!<br>";
  8.      echo"<a href=\"javascript:history.back()\" target=\"_self\">Torna indietro</a>";
  9.   }
  10.   else
  11.   {
  12.      $oggetto="$nome ti ha mandato un messaggio da A Passion Called Linux";
  13.      $intestazione="Rispondi a:<$mail>\n";
  14.      $destinatario="miamail@miamail.com";
  15.      mail($destinatario,$oggetto,"$messaggio",$intestazione);
  16.      if(mail($destinatario,$oggetto,"$messaggio",$intestazione))
  17.         echo"mail inviata correttamente! Grazie per aver usato questo servizio";
  18.      else
  19.         echo"Si è verificato un imprevisto e la mail non è stata mandata. Se puoi riprova più tardi. Grazie";
  20.   }
  21.   header("Location: scrivimi.html");
  22. ?>


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 è:
Testo quotato

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

PM Quote
Avatar
Fr3d3R!K (Ex-Member)
Expert


Messaggi: 589
Iscritto: 17/08/2006

Segnala al moderatore
Postato alle 14:05
Lunedì, 21/08/2006
non vi affollate uno alla volta...

PM Quote
Avatar
radio (Ex-Member)
Expert


Messaggi: 327
Iscritto: 03/03/2005

Segnala al moderatore
Postato alle 14:52
Venerdì, 01/09/2006
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
Codice sorgente - presumibilmente Php

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3.  <head>
  4.  
  5.  <meta name="author"
  6.         content="Radio">
  7.  <meta http-equiv="Content-Type"
  8.         content="text/html; charset=iso-8859-15">
  9.  
  10.  <title>scrivimi</title>
  11.  
  12.  <link rel=stylesheet href="style.css" type="text/css">
  13.  
  14.  </head>
  15.  
  16. <body>
  17. <?php
  18. $nome=$_POST['nome'];
  19. $mail=$_POST['mail'];
  20. $messaggio=$_POST['messaggio'];
  21.  
  22. if (empty($nome) || empty($mail) || empty($messaggio)) // OR not AND se no da errore solo se sono vuoti TUTTI E TRE!
  23.         print("
  24.         <h1>ERRORE</h1>
  25.        
  26.         Hai dimenticato di compilare qualche campo!<br>
  27.         <a href=\"javascript:history.back()\" target=\"_self\">Torna indietro!</a>");
  28. else
  29.         {
  30.         $oggetto="$nome ti ha mandato un messaggio da A Passion Called Linux";
  31.         $intestazione="Rispondi a:<$mail>\n";
  32.         $destinatario="dariocambie@gmail.com";
  33.        
  34.         $email=@mail($destinatario,$oggetto,"$messaggio",$intestazione); // metto la chiocciola per naconodere gli erori, che tanto gestisco dopo.
  35.        
  36.         if ($email) // come avevi messo tu l'e-mail veniva inviata 2 volte
  37.                 echo "Mail inviata correttamente!<br />Grazie per aver usato questo servizio!";
  38.         else
  39.                 echo "Si è verificato un imprevisto e la mail non è stata inviata.<br />Se puoi riprova più tardi.<br />Grazie";
  40.         }
  41. //header("Location: scrivimi.html");
  42. // Questo non poteva essere messo perchè gli headers erano già stati spediti!
  43.  
  44. ?>
  45. </body>
  46. </html>



SCRIVIMI.HTML[/B]
Codice sorgente - presumibilmente PHP

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3.  <head>
  4.  
  5.  <meta name="author"
  6.         content="Radio">
  7.  <meta http-equiv="Content-Type"
  8.         content="text/html; charset=iso-8859-15">
  9.  
  10.  <title>scrivimi</title>
  11.  
  12.  <link rel=stylesheet href="style.css" type="text/css">
  13.  
  14.  </head>
  15.  
  16. <body>
  17. <h1>Scrivimi!</h1>
  18. <p>
  19. 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
  20. rispondere).<br />
  21. Scrivi il messaggio e clicca su Invia!.<br />
  22. Ti ricordo che tutti i campi per i motivi sopra citati sono obbligatori e nel caso dovessi scordarti di scriverne uno
  23. verrai avvisato di completarlo.
  24. </p>
  25.  
  26. <form action="send.php" method="POST" enctype="multipart/form-data">
  27. <!-- NO, non è più text/plain ;-) -->
  28.  
  29.         <b>Tuo Nome:</b>  
  30.                 <input type="text" name="nome"  size="30" maxlength="30"><br />
  31.  
  32.         <b>Tua E-mail:</b>  
  33.                 <input type="text" name="mail" id="mail" size="50" maxlength="30"><br />
  34.  
  35.         <b>Messaggio:</b>  
  36.                 <textarea name="messaggio" cols="80" rows="15"></textarea><br />
  37. <br />
  38.   <div align="center">
  39.         <input type="submit" value=" Invia! ">  <input type="reset" value=" Cancella tutto! ">
  40.   </div>
  41. </form>
  42.  
  43. </body>
  44. </html>



Per maggiori info sono sempre a  disposizione ;-)

Ultima modifica effettuata da radio il 01/09/2006 alle 22:41
PM Quote
Avatar
Fr3d3R!K (Ex-Member)
Expert


Messaggi: 589
Iscritto: 17/08/2006

Segnala al moderatore
Postato alle 13:27
Martedì, 12/09/2006
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

PM Quote