Salve a tutti! Ho creato una pagina di registrazione, ma ho un problema: Ogni qual volta che mi registro, l'email viene inviata con il codice di conferma per finire la registrazione, ma il codice non funziona. Ecco la pagina:
Codice PHP:
<?php
if(!isset($_GET['passkey'])){
if(!isset($_POST['invia'])){
echo '<form method="post" action="#" id="formregistrazione">
<ul>
<li><lable for="username">Username:</lable>
<input type="text" name="username" id="username">
</li>
<li><lable for="password1">Password:</lable>
<input type="password" name="password1" id="password1">
</li>
<li><lable for="password2">Ripeti password:</lable>
<input type="password" name="password2" id="password2">
</li>
<li><lable for="username">Username:</lable>
<input type="text" name="username" id="username">
</li>
<li><lable for="email">Email:</lable>
<input type="text" name="email" id="email">
</li>
</ul>
<input type="submit" name="invia" id="registrati" value="Registrati">
</form>';
} else {
include 'config.php';
$codiceconferma = md5(uniqid(rand()));
$username = mysql_real_escape_string($_POST['username']);
$password1 = mysql_real_escape_string($_POST['password1']);
$password2 = mysql_real_escape_string($_POST['password2']);
$email = mysql_real_escape_string($_POST['email']);
if($username == ""|| $email == ""){
echo "Devi riempire tutti i campi";
}elseif($password1 == ""|| $password2 == ""){
echo "Devi riempire tutti i campi";
}elseif($password1 != $password2){
echo "Le password devono coincidere";
} else{
$recuperausermail = mysql_query("SELECT id FROM Utenti WHERE username = '$username' AND email = '$email'");
$contausermail = mysql_num_rows($recuperausermail);
if($contausermail > 0){
echo "Nome utente o email già disponibili.";
} else {
$inviautentitemp = mysql_query("INSERT INTO Utenti_tmp (Codiceconferma, Username, Password, Email) VALUES ('$codiceconferma','$username','$password1','$email')");
if($inviautentitemp){
$to=$email;
$subject="Conferma la registrazione.";
$header="From: [email]ysual@ymail.com[/email]";
$message="Ecco il tuo codice di attivazione \r\n";
$message.="Clicca sul link per confermare la registrazione \r\n";
$message.="http://www.italianwebhack.altervista.org/register.php?passkey=$codiceconferma";
$sentmail=mail($to, $subject, $message, $header);
}
if($sentmail){
echo "Per completare la registrazione, clicca sul link che ti abbiamo inviato per email";
} else{
echo "Errore: Non ti è stato inviato nessun link di attivazione account";
}
}
}
}
} else{
$passkey = $_GET['passkey'];
$sqlrecuperauser = "SELECT * FROM Utenti_tmp WHERE (Codiceconferma = '{$codiceconferma}' Username = '{$username}' Password = '{$password}' AND Email = '{$email}')";
$risultatouser = mysql_query($sqlrecuperauser);
if($risultatouser){
$contauser = mysql_num_rows($risultatouser);
if($contauser == 1){
$rows = mysql_fetch_array($risultatouser);
$username = $rows['username'];
$password = $rows['password'];
$email = $rows['email'];
$sqlconfermauser = "INSERT INTO Utenti (Username, Password, Email) VALUES ('{$username}','{$password}','{$email}')";
if($sqlconfermauser){
echo "Il tuo account è attivato.";
$sqleliminadati = "DELETE FROM Utenti_tmp WHERE Codiceconferma = '$codiceconferma' Username = '$username' Password = '$password' AND Email = '$email'";
} else {
echo "Il tuo account non è ancora attivo.";
}
}
}
}
?>
Dovrebbe inviare i dati alla tabella Utenti e dirmi "Il tuo account è attivo", ma visto che non li invia, non posso eseguire il login e il messaggio di registrazione avvenuta non lo da. Dove ho sbagliato? Potete aggiustarmi lo script? Grazie in anticipo:)