Creazione di un account

Ho adattato uno script preconfezionato alle mie esigenze. Ho però un problema che riguarda la mail di conferma dell'utente che richiede un account. Nel DB un campo "confirmed" viene settato a "1" al momento dell'immissione dei dati da parte dell'utente. La mail di conferma dovrebbe settare il campo a "0", ma ciò non avviene e non capisco perché. Segue il codice.

File account.php

<?php
include_once("functions.inc.php");

if ($_REQUEST["action"] != "signup" && $_REQUEST["action"] != "confirm") {
 signupForm();
}

if ($_REQUEST["action"] == "signup") {
 $username = $_POST["username"];
 $password = $_POST["password"];
 $email    = $_POST["email"];
createAccount($username,$password,$email);
}

if ($_REQUEST["action"] == "confirm" && $_REQUEST["confirm"] != "") {
confirm($_REQUEST["confirm"]);
}
?>

File functions.inc.php

<?php
include_once("config.inc.php");

function confirm ($random) {

 # Connessione al database da variabili definite nel config.inc.php
 global $db, $db_host, $db_user, $db_password;

 # Connessione al db con eventuali segnali di errore
 $cid = mysql_connect($db_host,$db_user,$db_password);
 if (!$cid) {
  die("ERROR: " . mysql_error() . "\n");
}

 # Settaggio della conferma dell'utente
 $SQL = "UPDATE account SET confirmed = '0' WHERE random = '$confirm'";
 $result = mysql_db_query($db,$SQL,$cid);

 # Ricerca degli errori
 if (!$result) {
  die("ERROR: " . mysql_error() . "\n");
}else{
  echo "<h4>Il tuo account è stato confermato con successo<br>Entro 24 ore sarà possibile effettuare il login</h4>";
  echo "<script>function redirect(){window.location.replace(\"../index.php\");}setTimeout(\"redirect()\", 5000);</script>";
}
mysql_close($cid); 
}

function signupForm () {
 # Form di registrazione...(tutto ok)


function createAccount ($username, $password, $email)
{
   if ($username == "" || $password == "" || $email == "")
{
   die("ERRORE: Assicurarsi che tutti i campi siano riempiti!");
}

 # Connessione al database da variabili definite nel config.inc.php
 global $db, $db_host, $db_user, $db_password;

 # Connessione al db con eventuali segnali di errore
 $cid = mysql_connect($db_host,$db_user,$db_password);
   if (!$cid) {
   die("ERROR: " . mysql_error() . "\n");
} 

 # Creazione di un numero casuale
 $floor = 100000;
 $ceiling = 999999;
 srand((double)microtime()*1000000);
 $random = rand($floor, $ceiling);

 # Mail che l'utente riceve per confermare
 $message = "Hai utilizzando questo indirizzo di posta elettronica per richiedere un account che ti consenta di visualizzare i tuoi voti. Fai click sul link qui di seguito per confermare. \n\n http://polliotto.altervista.org/autentica/account.php?action=confirm&confirm=$random\n\n In caso contrario manda un messaggio per annullare la richiesta a m.polliotto@wooowfast.it\n\n Ciao";

 # Invio messaggio di conferma
 mail($email, "Conferma Account", $message);

 # $password = md5($password); toglier questo commento per archiviare le pw criptate

 # Inserimento nel db
 $SQL = "INSERT INTO account VALUES ('$username','$password','$email','1','$random')";
 $result = mysql_db_query($db,$SQL,$cid);

 # Ricerca errori
   if (!$result) {
    die("ERROR: " . mysql_error() . "\n");
}else{
echo "Per confermare la richiesta occorre cliccare sul link nella mail che e stata inviata a <strong>$email</strong>";
echo "<script>function redirect(){window.location.replace(\"../index.php\");}setTimeout(\"redirect()\", 8000);</script>";
}
mysql_close($cid);
}
?>
inviato 8 anni fa
lupo53
X 0 X

probabilmente questa query:

$SQL = "UPDATE account SET confirmed = '0' WHERE random = '$confirm'";

va scritta utilizzando come parametro $random al posto di $confirm:

$SQL = "UPDATE account SET confirmed = '0' WHERE random = '$random'";

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Funziona! Grazie per l'aiuto.

 :)

risposto 8 anni fa
lupo53
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda