ragazzi potete aiutarmi a concepire un sistema di registrazione con conferma? già l'ho fatto altre volte ma non mi piace. Ecco il codice:
Sintassi SQL
Modulo di registrazionecodice:create database if not exists db; use db; create table if not exists sessions ( sessionId varchar(32) not null primary key, sessionTime integer not null, sessionData text not null ); create table if not exists registrations ( code varchar(32) not null primary key, userName varchar(10) not null unique, eMail varchar(255) not null unique, time integer not null, data mediumtext ); create table if not exists accounts ( id integer unsigned not null auto_increment primary key, userName varchar(10) not null unique, eMail varchar(255) not null unique, password varchar(32) );
Modulo di conferma della registrazionecodice:<?php $registration=array( "submitButton" => array( "name" => "inviated", "value" => "Invia i dati." ), "mail" => array( "subject" => "Conferma di iscrizione.", "from" => "vincenza.tralice@tiscali.it", ) ); // includes include_once("../includes/databaseConfigurations.include.php"); include_once("../includes/databaseConnection.include.php"); include_once("../includes/tables.include.php"); // functions include_once("../functions/errorMessage.function.php"); include_once("../functions/warningMessage.function.php"); include_once("../functions/deleteExpiredRegistrations.function.php"); // classes include_once("../classes/session.class.php"); deleteExpiredRegistrations(); $obj_session=new session($databaseHandle); if($obj_session->getVar("id")!=null) { warningMessage("Sei già registrato.", "../index.php"); exit; } if($_POST[$registration["submitButton"]["name"]]==$registration["submitButton"]["value"]) { $post=&$_POST; // functions include_once("../functions/parseUserName.function.php"); include_once("../functions/parse_eMail.function.php"); include_once("../functions/parsePassword.function.php"); include_once("../functions/exists_registration.function.php"); include_once("../functions/exists_account.function.php"); include_once("../functions/str_crypt.function.php"); // classes include_once("../classes/sendMail.class.php"); if(!parseUserName($post["userName"])) { errorMessage("L'userName digitato non è corretto."); exit; } if(!parse_eMail($post["eMail"])) { errorMessage("L'eMail digitata non è corretta."); exit; } if(!parsePassword($post["password"])) { errorMessage("La password digitata non è corretta."); exit; } if(exists_registration($post["userName"], $post["eMail"])) { errorMessage("L'utente specificato dall'userName o dall'eMail è in fase di registrazione."); exit; } if(exists_account($post["userName"], $post["eMail"])) { errorMessage("L'utente specificato dall'userName o dall'eMail è già registrato."); exit; } $post["code"]=md5(microtime()); $post["time"]=time(); $post["data"]=array( "password" => str_crypt($post["password"], $post["userName"]) ); $post["data"]=serialize($post["data"]); $q_insertRegistration=mysql_query( "insert into {$tables["registrations"]} set code='{$post["code"]}', userName='".addslashes($post["userName"])."', eMail='".addslashes($post["eMail"])."', time={$post["time"]}, data='".addslashes($post["data"])."'", $databaseHandle ); $eMailTextMessage=<<<EOD Grazie per esserti registrato. I TUOI DATI - Username: {$post["userName"]} - Password: {$post["password"]} Per confermare l'iscrizione inserisci il codice e l'eMail sottostante nel apposito modulo di conferma dell'iscrizione. CODICI - eMail: {$post["eMail"]} - Codice: {$post["code"]} Arrisentirci. EOD; $obj_sendMail=new sendMail($registration["mail"]["from"], $post["eMail"], $registration["mail"]["subject"]); $obj_sendMail->setTextMessage($eMailTextMessage); $obj_sendMail->send(); warningMessage("Un eMail di conferma è stata inviata alla tua casella di posta.", $_SERVER["PHP_SELF"]); exit; } ?> <html> <head> <title>Registrazione.</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> </head> <body> <form method="post" action="<?php print($_SERVER["PHP_SELF"]) ?>"> <table width="100%"> <tr> <td width="30%">userName</td> <td><input type="text" name="userName"></td> </tr> <tr> <td>eMail</td> <td><input type="text" name="eMail"></td> </tr> <tr> <td>password</td> <td><input type="password" name="password"></td> </tr> <tr> <td colspan="2"> <input type="reset" value="Resetta">, <input type="submit" name="<?php print($registration["submitButton"]["name"]); ?>" value="<?php print($registration["submitButton"]["value"]); ?>"> </td> </tr> </table> </form> </body> </html>
La funzione deleteExpiredRegistrationscodice:<?php $confirmRegistration=array( "submitButton" => array( "name" => "inviated", "value" => "Conferma la tua iscrizione." ) ); // includes include_once("../includes/databaseConfigurations.include.php"); include_once("../includes/databaseConnection.include.php"); include_once("../includes/tables.include.php"); // functions include_once("../functions/errorMessage.function.php"); include_once("../functions/warningMessage.function.php"); // classes include_once("../classes/session.class.php"); $obj_session=new session($databaseHandle); if($obj_session->getVar("id")!=null) { warningMessage("Sei già registrato.", "../index.php"); exit; } if($_POST[$confirmRegistration["submitButton"]["name"]]==$confirmRegistration["submitButton"]["value"]) { $post=&$_POST; // functions include_once("../functions/parseCode.function.php"); include_once("../functions/parse_eMail.function.php"); if(!parseCode($post["code"])) { errorMessage("Il codice digitato non è valido."); exit; } if(!parse_eMail($post["eMail"])) { errorMessage("L'eMail digitata non è corretta."); exit; } $post["code"]=addslashes($post["code"]); $post["eMail"]=addslashes($post["eMail"]); $q_selectRegistration=mysql_query( "select * from {$tables["registrations"]} where code='{$post["code"]}' and eMail='{$post["eMail"]}'", $databaseHandle ); if(mysql_num_rows($q_selectRegistration)!=1) { errorMessage("La registrazione indicata dal codice e dall'eMail non esiste."); exit; } $d_selectRegistration=mysql_fetch_array($q_selectRegistration, MYSQL_ASSOC); $d_selectRegistration["data"]=unserialize( stripslashes($d_selectRegistration["data"]) ); $q_insertAccount=mysql_query( "insert into {$tables["accounts"]} set userName='{$d_selectRegistration["userName"]}', eMail='{$d_selectRegistration["eMail"]}', password='{$d_selectRegistration["data"]["password"]}'", $databaseHandle ); $q_deleteRegistration=mysql_query( "delete from {$tables["registrations"]} where code='{$post["code"]}'", $databaseHandle ); warningMessage("Ti sei registrato con successo.", $_SERVER["PHP_SELF"]); exit; } ?> <html> <head> <title>Conferma della registrazione.</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> </head> <body> <form method="post" action="<?php print($_SERVER["PHP_SELF"]); ?>"> <table width="100%"> <tr> <td width="30%">code</td> <td><input type="text" name="code"></td> </tr> <tr> <td>eMail</td> <td><input type="text" name="eMail"></td> </tr> <tr> <td colspan="2"> <input type="reset" value="Resetta"> <input type="submit" name="<?php print($confirmRegistration["submitButton"]["name"]); ?>" value="<?php print($confirmRegistration["submitButton"]["value"]); ?>"> </td> </tr> </table> </form> </body> </html>
codice:<?php function deleteExpiredRegistrations($expire=3600) { global $databaseHandle, $tables; $q_deleteExpiredRegistrations=mysql_query( "delete from {$tables["registrations"]} where time<".(time()-$expire), $databaseHandle ); } ?>

Rispondi quotando