bene ragazzi, giusto stamattina risolvevo assieme a bstefano dei problemi con il login al sito, poi però mi sono imbattuto in un problema più grande ossia, l'utente che si registra, avrà bisogno se il sito è fatto bene di confermare la propria adesione al sito internet, quindi ho tirato giù grazie anche alle guide di HTML.it il php necessario all'invio della mail, il problema giunge quando inserendo i dati quindi cliccando sul fatidico tastino submit, deve inoltrare la mail con i dati...sbadilandomi codici di errore del tipo:
Warning: mail() [function.mail]: SMTP server response: Per ulteriori informazioni, vai a: http://aiuto.libero.it/invioposta in C:\Users\Andrea\Downloads\server2go\htdocs\sito\re gistrazione_avvenuta.php on line 140
Errore durante l'invio dell'e-mail.
premetto che utilizzo server 2 go e che modificare il file php.ini inserendo l'smtp di libero nel mio caso e l'indirizzo email sempre mio in questo caso non è servito a niente, ho provato ad ovviare utilizzando gli ini_set ma niente... io posto il codice poi se qualche anima pia si avvale della facoltà di indirizzarmi verso la dritta via gliene sarei grato...
Codice PHP:
<?php
$reg = mysql_connect("localhost","root","")or die("cannot connect"); mysql_select_db("sito", $reg)or die("cannot select DB");
$nome = $_POST['name'];
$cognome = $_POST['surname'];
$telefono = $_POST['telefono'];
$mail = $_POST['mail'];
$nickname = $_POST['nick'];
$password1 = $_POST['pass1'];
$password2 = $_POST['pass2'];
$gg = $_POST['gg'];
$mm = $_POST['mm'];
$aaaa = $_POST['aaaa'];
$DOB = $aaaa.'-'.$mm.'-'.$gg;
function crypt_pass($password2){
return sha1($password2); }
$reg_crypt_pass = crypt_pass($password2);
$check = "SELECT * FROM utenti WHERE nickname = '$nickname' OR password = '$password' ";
$result = mysql_query($check) or die (mysql_error());
if (mysql_num_rows($result) != 0) {
while ($row = mysql_fetch_array($result)) {
//username già presente nel db
if ($row['nickname'] == $nickname) {
echo "
"; echo "L'username, [b]" . $row['nickname'] . "[/b] è già
in uso da un altro utente, sceglierne uno diverso";
echo "</p>"; }
//email già presente nel db
if ($row['user_email'] == $_POST['email']) {
echo "
"; echo "La casella E-mail, [b]" . $row['user_email'] . "[/b] è
già presente nel Data Base, scegliere una diversa";
echo "</p>"; }
}
//rimandiamo l'utente alla pagina precedente
echo "
";
echo "<a href=\"registrazione.php\">";
echo "<<< Clicca qui per ritornare alla pagina precedente";
echo "</a>";
echo "</p>";
exit();
}
//Se invece username e email non sono presenti nel db procediamo con l'inserimanto
else {
$sql="INSERT into utenti
(nome,cognome,data_nascita,telefono,e_mail,nickname,password,decrypted_password)
VALUES('$nome','$cognome','$DOB','$telefono','$mail','$nickname','$reg_crypt_pass',
'$password2')";
//echo $sql."
";
$utenti = mysql_query($sql) or die(mysql_error());
$id = mysql_insert_id(); // recuperiamo l'id (contenuto nel campo userid) dell'utente
appena inserito
}
//echo $id;
$temp = gettimeofday();
$msec = (int) $temp["usec"];
$msgid = sha1(time() . $msec);
$ins = "INSERT INTO confirm (confirm_validator, confirm_userid) VALUES ('$msgid','$id')"; $res = mysql_query($ins) or die(mysql_error());
$to = $_POST['mail'];
$toname = $_POST['name'];
$subject = "Completa la tua registrazione";
$boundary = "==MP_Bound_xyccr948x==";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: multipart/alternative; boundary=\"$boundary\"\r\n";
$headers .= "From: [email]typhoon2002@libero.it[/email]\r\n"; //inseriamo l'indirizzo email
del mittente, cioè il nostro
$html_msg = "<center>"; $html_msg .= "<table width=\"500\" border=0 cellpadding=\"4\">"; $html_msg .= "<tr><td align=\"center\">";
$html_msg .= "</td></tr>";
$html_msg .= "<tr><td>Questi sono i dati della tua registrazione:";
$html_msg .= "</td></tr><tr><td>Username: <font color=\"red\">" . $nickname . "</font>"; $html_msg .= "</td></tr><tr><td>Password: <font color=\"red\">" . $password2 . "</font>"; $html_msg .= "</td></tr><tr><td align=\"center\">"; $html_msg .= "</td></tr></table></center>";
$confirmmessage = "Salve" . $toname . ",\n\n";
$confirmmessage .= "per completare la tua registrazione devi cliccare sul link sottostante:\n\n";
$confirmmessage .= $html_msg . "\n\n"; // Attenzione! Qui sotto dobbiamo inserire il percorso esatto che porta alla nostra pagina confirm_reg.php
$confirmmessage .= "<a href=\"http://localhost/percorso pagina confirm_reg.php?id=$msgid\">Clicca qui per confermare la tua registrazione</a>";
$message = "This is a Multipart Message in MIME format\n";
$message .= "--$boundary\n";
$message .= "Content-type: text/html; charset=iso-8859-1\n";
$message .= "Content-Transfer-Encoding: 7bit\n\n";
$message .= $confirmmessage ."\n"; $message .= "--$boundary--";
$sender_mail = "sender mail";
$server = "smtp.libero.it";
$porta_mail = 25;
setSMTP($server,$sender_mail,$porta_mail);
function setSMTP($server1 , $senderMail1, $port) { //Setti indirizzo server SMTP
ini_set('SMTP' , $server1); //Setti la porta del server
ini_set('smtp_port' , $port); //indirizzo e-mail del mittente
ini_set('sendmail_from' , $senderMail1); }
$mailsent = mail($to, $subject, $message, $headers);
if ($mailsent){ echo "Grazie per esserti registrato, ti auguriamo una buona navigazione sul nostro sito" . $toname . ",
";
echo "Un messaggio è stato inviato all'indirizzo [b]" .$to. "[/b] da te fornito.
";
echo "IMPORTANTE:
";
echo "Per completare la registrazione al sito devi aprire la tua casella e-mail, leggere il messaggio di conferma e cliccare sul link che troverai all'interno.
"; }
else {
echo "Errore durante l'invio dell'e-mail.";
} ?>
premetto che approssimativamente la riga 140 dell'errore è questa:
Codice PHP:
$mailsent = mail($to, $subject, $message, $headers);