Problemi PHP - Conferma e-mail/Recupero pass
Buongiorno, ho creato il sito: http://forfree.altervista.org seguendo questa guida. Il sito è praticamente un sistema di registrazione e log in, il quale invia un'email di conferma per verificare l'utente e c'è la possibilità di reimpostare la password casomai fosse stata dimenticata. Ovviamente il tutto è basto sulla correlazione tra PHP ed il DBMS MySql fornito da Altervista nel quale ho creato una tabella "utente" con i relativi attributi necessari.
Il problema sorge quando si preme sul link di attivazione, perché inizialmente dopo aver completato i campi nome, cognome, email e password per poi premere sul pulsante di registrazione si viene reindirizzati alla pagina del profilo dove viene detto all'utente che deve verificare il suo account con il link inviato alla sua e-mail. Successivamente verificando l'email viene inviato un link del tipo: forfreee.altervista.org/verify.php?email='.$email.'&hash='.$hash.
Questo è uno spezzone del codice all'interno del file "verify.php" che viene eseguito solamente con il link di attivazione (di cui ho esposto la struttura nella riga sopra) inviato all'email:
Codice PHP:
if(isset($_GET['email']) && !empty($_GET['email']) AND isset($_GET['hash']) && !empty($_GET['hash'])) {
$email = $mysqli->escape_string($_GET['email']);
$hash = $mysqli->escape_string($_GET['hash']);
// Select user with matching email and hash, who hasn't verified their account yet (active = 0)
$result = $mysqli->query("SELECT * FROM users WHERE email='$email' AND hash='$hash' AND active='0'");
if ( $result->num_rows == 0 ) {
$_SESSION['message'] = "Account has already been activated or the URL is invalid!";
header("location: error.php");
} else {
$_SESSION['message'] = "Your account has been activated!";
// Set the user status to active (active = 1)
$mysqli->query("UPDATE users SET active='1' WHERE email='$email'") or die($mysqli->error);
$_SESSION['active'] = 1;
header("location: success.php");
}
} else {
$_SESSION['message'] = "Invalid parameters provided for account verification!";
header("location: error.php");
}
Casomai vi sia bisogno di altro codice del progetto per trovare l'errore è possibile trovare tutto quanto su questo link visto che il tutto è open source e come ho detto all'inizio parte di una guida online.
MODIFICA SUCCESSIVA:
Ovviamente se il problema avviene quando ci si registra e si cerca di fare la verifica dell'account perché non funziona il link vale lo stesso anche per il link che si riceve quando si fa la procedura per la password dimenticata.