ciao a tutti
ho uno script php che manda una mail di attivazione/conferma dell'account.
prova a fare ad es. 3 registrazioni una dietro l'altra (mie diverse email ovviamente) e a confermare tutte e 3 insieme.
funziona bene solo il primo account che decido di attivare (non in ordine di registrazione) per gli altri mi dice error key 2.
però, se aggiorno il DB posso procedere all'attivazione degl'altri account, sempre uno alla volta.
come mai???
ecco il codice
Codice PHP:
<?php
$username = "mionome";
$password = "miapassword";
$host = "localhost";
$database = "my_db";
$db = mysql_connect($host, $username, $password) or die("Errore durante la connessione al database");
mysql_select_db($database, $db) or die("Errore durante la selezione del database");
if ($_POST['form_submitted'] == '1') {
## Form was submitted,the user is registering!
} else{
## No value found, user must be activating their account!
}
$activationKey = mt_rand() . mt_rand() . mt_rand() . mt_rand() . mt_rand();
$username = mysql_real_escape_string($_POST[username]);
$password = mysql_real_escape_string($_POST[password]);
$email = mysql_real_escape_string($_POST[email]);
$sql="INSERT INTO users (username, password, email, activationkey, status) VALUES ('$username', '$password', '$email', '$activationKey', 'verify')";
;
if (!mysql_query($sql))
{
die('Error: ' . mysql_error());
}
echo "An email has been sent to $_POST[email] with an activation key. Please check your mail to complete registration.";
##Send activation Email
$to = $_POST[email];
$subject = " YOURWEBSITE.com Registration";
$message = "Welcome to our website!\r\r You, or someone using your email address, has completed registration at YOURWEBSITE.com. You can complete registration by clicking the following link:\rhttp://miosito.altervista.org/registrant/verify.php?$activationKey\r\r If this is an error, ignore this email and you will be removed from our mailing list.\r\rRegards,\ YOURWEBSITE.com Team";
$headers = 'From: noreply@ YOURWEBSITE.com' . "\r\n" .
'Reply-To: noreply@ YOURWEBSITE.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
##User isn't registering, check verify code and change activation code to null, status to activated on success
$queryString = $_SERVER['QUERY_STRING'];
$query = "SELECT * FROM users";
$result = mysql_query($query) or die(mysql_error());
while($row = mysql_fetch_array($result)){
if ($queryString == $row["activationkey"]){
echo "Congratulations!" . $row["username"] . " is now the proud new owner of a YOURWEBSITE.com account.";
##$sql="UPDATE users SET activationkey = '', status='activated' WHERE (id = $row[id])";
$sql="UPDATE users SET activationkey = 'Done-$row[id]', status='activated' WHERE (id = $row[id])";
if (!mysql_query($sql))
{
die('Error: ' . mysql_error());
}
}
}
?>
altra cosa, quando confermo l'utente compare il messaggio di ringraziamento ma prima c'è ancora quello di conferma invio email di attivazione...
grazie per l'aiuto ragazzi