Buon giorno, arrivo al punto.
All'atto della registrazione invio una mail dove è incluso un link per confermare la registrazione.
Tralasciando il form vorrei soffermarmi sullo script di inserimento dati nel DB e l'invio della mail.
Il problema è che ci sono utenti che ricevono il link completo di "hash" e id dell'utente appena creato e a chi gli manca l'id.
es:
- Senza Id
modifica
- COn Id
modifica

Quindi ne consegue che, ricevendo la mail senza l'id la registrazione o la modifica di un qualcosa non andrà a buon fine.
Questa è la pagina:
codice:
<?php 
	include('decripta_password/EncDec.class.php');

	$txtG 		= $_POST['txtG'];
	$txtM 		= $_POST['txtM'];
	
	$txtUserName 		= $_POST['txtUserName'];
	$txtNewUserName		= $_POST['txtNewUserName'];
	
	$txtPassword 		= $_POST['txtPassword'];
	$txtMail 			= $_POST['txtMail'];

echo "<div id='container'>";

if(!$Connessione){
	echo "Non è possibile connettersi";
	exit;
}
else{
	if($txtG!="" && $txtM != ""){
		$sql = "SELECT Username FROM TBESTERNI WHERE Username=\"".$txtNewUserName."\"";
		$rsUser= mysql_query($sql) or die ("Impossibile connettersi!" . mysql_error());
		$num_righe = mysql_num_rows($rsUser);
		
		$cPassword = str_crypt($txtPassword, $txtNewUserName);
			
			if ($num_righe == false) {
				//se la nuova user non è presente nel db allora la cambia
				//*******************UPDATE - INSERT ***********************//
				$sql =	"UPDATE TBESTERNI SET"
						."  Username=\"".$txtNewUserName."\""
						.", Pwd=\"".$cPassword."\""
						.", dModifica=\"".date("Y-m-d G:i:s")."\""
						.", abilita=\"0\""
						."  WHERE Username = \"".$txtUserName."\" and (Mat=\"".$txtM."\" and Giu=\"".$txtG."\")";
				$rsUser= mysql_query($sql) or die ("Impossibile connettersi!" . mysql_error());
				$Update = "1";

				//********SPAZIO PER REGISTRAZIONE*****************//
				$hash_generato = md5(session_id()."##".mktime()).md5($txtNewUserName+$txtMail);
				$sql1 = "SELECT IdUserEsterno FROM TBESTERNI WHERE UserName=\"".$txtNewUserName."\" and (Mat=\"".$txtM."\" and Giu=\"".$txtG."\")";
				$rsUser2= mysql_query($sql1) or die ("Impossibile connettersi!" . mysql_error());
				$row = mysql_fetch_row($rsUser2);

				$sql2 =	"INSERT INTO TBREGISTRAZIONE ("
						."id, hash,id_utente"
						."  ) VALUES ("
						." \"\""
						.", \"".$hash_generato."\""
						.", \"".$row[0]."\""
						."  )";
				$rsUser2= mysql_query($sql2) or die ("Impossibile eseguire l'insert nella tabella registrazione!" . mysql_error());
				$Insert = "1";
				//mysql_free_result($rsUser);
				//*******************UPDATE - INSERT ***********************//				
			}
			else{
				//verifico se le user(vecchia e nuova) appartengono alla matricola e rg digitati
				$sql = "SELECT Username FROM TBESTERNI WHERE UserName=\"".$txtNewUserName."\" and (Mat=\"".$txtM."\" and Giu=\"".$txtG."\")";
				$rsUser= mysql_query($sql) or die ("Impossibile connettersi!" . mysql_error());
				$rowOldUser = mysql_num_rows($rsUser);
				
				if ($num_righe == false) {
					echo "	Errore: La UserName da lei scelta è già presente in archivio, pertanto non è possibile procedere.

							Torni al modulo scegliendo una Username diversa da quella appena digitata.";
							exit;
				}
				else{
					//se la nuova user non è presente nel db allora la cambia
					//*******************UPDATE - INSERT ***********************//
					$sql =	"UPDATE TBESTERNI SET"
							."  Username=\"".$txtNewUserName."\""
							.", Pwd=\"".$cPassword."\""
							.", dModifica=\"".date("Y-m-d G:i:s")."\""
							.", abilita=\"0\""
							."  WHERE Username = \"".$txtUserName."\")";
					$rsUser= mysql_query($sql) or die ("Impossibile connettersi!" . mysql_error());
					$Update = "1";
	
					//********SPAZIO PER REGISTRAZIONE*****************//
					$hash_generato = md5(session_id()."##".mktime()).md5($txtNewUserName+$txtMail);
					$sql1 = "SELECT IdUserEsterno FROM TBESTERNI WHERE UserName=\"".$txtUserName."\"";
					$rsUser2= mysql_query($sql1) or die ("Impossibile connettersi!" . mysql_error());
					$row = mysql_fetch_row($rsUser2);
	
					$sql2 =	"INSERT INTO TBREGISTRAZIONE ("
							."id, hash,id_utente"
							."  ) VALUES ("
							." \"\""
							.", \"".$hash_generato."\""
							.", \"".$row[0]."\""
							."  )";
					$rsUser2= mysql_query($sql2) or die ("Impossibile eseguire l'insert nella tabella registrazione!" . mysql_error());
					$Insert = "1";
					//mysql_free_result($rsUser);
					//*******************UPDATE - INSERT ***********************//
				}
			}
		}	
		else{
			echo "	Errore: 
					

Si &egrave; verificato un problema al momento del recupero riprovate pi&ugrave; tardi oppure contattare l&rsquo;amministratore se il problema persiste.
					

					La ringraziamo per la sua collaborazione.Buona giornata.
					</p>";
					exit;
		}
	//}
	mysql_close();

	
	if (strlen($_SESSION['SessMailUserEsterno']) > 0) {
		$destinatari  = $txtMail ;//$_SESSION['SessMailUserEsterno'];
		$oggetto = "Segnalazione";
		$messaggio = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">'
					.'<html>'
					.'	<head>'
					.'		<title>Conferma ricezione della Vostra Registrazione del '.date("Y-m-d G:i:s").'</title>'
					.'		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">'
					.'	</head>'
					.'	<body>';

					if($Update != "" || $Insert!=""){
						if($Update=="1"){
							$messaggio .='

I dati sono stati modificati in data '.date("Y-m-d G:i:s").'.</p>';
						}
						$messaggio .=	 '


												Per confermare la modifica e ottenere i nuovi dati deve cliccare qui 
													Conferma Modifica.
										  </p>';
					}
					
		$messaggio .='

Un cordiale saluto.</p>.'
					.'	</body>'
					.'</html>'
					.'';

		/* Per inviare email in formato HTML, si deve impostare l'intestazione Content-type. */
		$intestazioni = "";
		$intestazioni .= "MIME-Version: 1.0\r\n";
		$intestazioni .= "Content-type: text/html; charset=iso-8859-1\r\n";
		$intestazioni .= "From: AZienda <webmaster@miosito.it>\r\n";
		
		/* ed infine l'invio */
		if(isset($_SESSION['verificaInvioMail'])){
			if(@mail($destinatari, $oggetto, $messaggio, $intestazioni)) {
				$_SESSION['verificaInvioMail'] = "1";
				
				if($Update == "1"){
					echo "	DATI AGGIORNATI!!!
							

							LE ABBIAMO INVIATO UNA MAIL NELLA QUALE TROVER&Aacute; UN LINK(COLLEGAMENTO) PER CONFERMARE LA MODIFICA!
							

							FINQUANDO NON CLICCHER&Agrave; IL LINK, IL SUO PROFILO NON SAR&Agrave; ATTIVO.
							

							EMAIL INOLTRATA.
							

							Tra qualche secondo sar&agrave; reindirizzato all&rsquo;interno del sito.";
				}
				elseif($Insert == "1"){
					echo "	LE ABBIAMO INVIATO UNA MAIL NELLA QUALE TROVER&Aacute; UN LINK(COLLEGAMENTO) PER CONFERMARE LA REGISTRAZIONE!
							

							FINQUANDO NON CLICCHER&Agrave; IL LINK, IL SUO PROFILO NON SAR&Agrave; ATTIVO.
							

							EMAIL INOLTRATA.";
				}
				else{
					echo "UTENTE CANCELLATO - EMAIL INOLTRATA";
				}
			}
			else{
				echo "Problemi nell'invio della mail!Controlla eventualmente nella tua casella di posta se ti è arrivata la nostra mail.";
			}	
		}	
		else{
			echo "OPERAZIONE GI&Agrave; ESEGUITA ED EMAIL GI&Agrave; INOLTRATA";
			$_SESSION['verificaInvioMail'] = "";
		}
		header("Refresh: 15; URL=LogOut.php");
	}
}
echo "</div>";
?>
La mia domanda:
sapete dirmi per favore per quale motivo alcuni ricevono il link completo di id e altri no?
PS: il valore che indica l'id è riferito a row[0].
Grazie mille e buona giornata.