Per coloro che possono darmi una mano, sto utilizzando l'articolo pubblicato su freephp per la registrazione di nuovi utenti su DB.
Il mio problema è sulla conferma dell'avvenuta registrazione: premetto che la mail per la conferma della registrazione mi arriva in locale tramite uno script per settare smtp della mail in locale scaricato proprio da una delle pillole, e che fin'ora non mi ha dato mai problemi.
Nel momento in cui apro la mail per confermare la registrazione il file confirm.php mi manda questa stringa:
La registrazione non può essere confermata, probabilmente poichè è scaduta.
posto il codice di confirm.php:
e quello relativo a reg.lib.php che è quello realmente che fa il lavoro:codice:<?php include_once("include/config.php"); include_once("include/reg.lib.php"); if(isset($_GET['id']) and strlen($_GET['id']) == 32){ reg_clean_expired(); $status = reg_confirm($_GET['id']); switch($status){ case REG_SUCCESS: echo "La tua registrazione è stata confermata; ora puoi effettuare il login."; break; case REG_FAILED: echo "La registrazione non può essere confermata, probabilmente poichè è scaduta."; break; } } ?>
se qualcuno ha idea del perchè mi viene invalidata la registrazione... non mi dite che è perchè lavoro in locale perchè mi sparo...codice:<?php function reg_register($data){ //registro l'utente global $_CONFIG; $id = reg_get_unique_id(); mysql_query(" INSERT INTO ".$_CONFIG['table_utenti']." (name, surname, indirizzo, occupazione, username, password, temp, regdate, uid) VALUES ('".$data['name']."','".$data['surname']."','".$data['indirizzo']."', '".$data['occupazione']."','".$data['username']."',MD5('".$data['password']."'), '1', '".time()."','".$id."')"); //Decommentate la riga seguente per testare lo script in locale //echo "<a href=\"http://localhost/freephp/autenticazione/confirm.php?id=".$id."\">Conferma</a>"; if(mysql_insert_id()){ return reg_send_confirmation_mail($data['mail'], "test@localhost", $id); }else return REG_FAILED; } function reg_send_confirmation_mail($to, $from, $id){ //invio la mail di conferma $msg = "Per confermare l'avvenuta registrazione, clicckate il link seguente: http://localhost/freephp/autenticazione/confirm.php?id=".$id." "; return (mail($to, "Conferma la registrazione", $msg, "From: ".$from)) ? REG_SUCCESS : REG_FAILED; } function reg_clean_expired(){ global $_CONFIG; $query = mysql_query(" DELETE FROM ".$_CONFIG['table_utenti']." WHERE (regdate + ".($_CONFIG['regexpire'] * 60 * 60).") <= ".time()." and temp='1'"); } function reg_get_unique_id(){ //restituisce un ID univoco per gestire la registrazione list($usec, $sec) = explode(' ', microtime()); mt_srand((float) $sec + ((float) $usec * 100000)); return md5(uniqid(mt_rand(), true)); } function reg_check_data(&$data){ global $_CONFIG; $errors = array(); foreach($data as $field_name => $value){ $func = $_CONFIG['check_table'][$field_name]; if(!is_null($func)){ $ret = $func($value); if($ret !== true) $errors[] = array($field_name, $ret); } } return count($errors) > 0 ? $errors : true; } function reg_confirm($id){ global $_CONFIG; $query = mysql_query(" UPDATE ".$_CONFIG['table_utenti']." SET temp='0' WHERE uid='".$id."'"); return (mysql_affected_rows () != 0) ? REG_SUCCESS : REG_FAILED; } ?>

Rispondi quotando
