Newsgroup: it.comp.www.php
Titolo: 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
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 function.inc.php (la parte in questione)
....
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.pol...@wooowfast.it
\n\n Ciao";
  # Invio messaggio di conferma
  mail($email, "Conferma Account", $message);
  # 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);
}
....
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 QUI NON FUNZIONA!
  $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>";
}
mysql_close($cid);
}
======================================
Spedita la mail di conferma il messaggio compare senza segnalare errori,
però l'UPDATE non funziona!
Scusate la lungaggine
-- 
<<per contatti togliere gli asterischi>>

 '$confirm'";  
Non e' che al posto di $confirm dovrebbe essere $random?
-- 
Vuoi distribuire il tuo sito web su CD/DVD?
Prova 
http://www.dwebpro.com/
Vuoi diventare un esperto analista PHP/MySQL?
Vieni a fare uno stage con noi: 
http://www.creativepark.it/stage/

  $result = mysql_db_query($db,$SQL,$cid);
se setti il campo a 0 o 1 significa che è un campo numerico,di conseguenza 
toglierei gli apici ,sia dallo 0 che da $confirm 

Grazie a Filippo.
Al posto di $confirm dovevo mettere $random.
Spesso ci si rompe la testa...poi la soluzione a volte è più semplice di 
quello che si pensa!
