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
codice:
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 registrazione
codice:
<?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>
Modulo di conferma della registrazione
codice:
<?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>
La funzione deleteExpiredRegistrations
codice:
<?php

 function deleteExpiredRegistrations($expire=3600) {
  global $databaseHandle, $tables;

  $q_deleteExpiredRegistrations=mysql_query(
	"delete from {$tables["registrations"]} where time<".(time()-$expire),
	$databaseHandle
  );
 }

?>