Verifica correttezza form

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Buonasera, sto cercando di riprendere in mano la creazione del sito e relativo form. Ho un problema che non riesco a risolvere. Spero che possiate aiutarmi o darmi una dritta. Il problema è che ho creato un form con il controllo su tutti i campi, e dopo il controllo viene inviata una mail al mittente per la conferma dell'account. La questione è che nonostante tutto non riesco ad ottenere errori. Il codice php è corretto, ma non funziona la validazione dei campi, non riesco ad ottenere nessun avviso o warning.
Qui di seguito il codice del form:
PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--#include virtual="/riservato/_private/logon.inc"-->
<title>Biblionet - Registrazione</title>
<link href="css/reset.css" type="text/css" rel="stylesheet" />
<link href="css/Master.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="js/validation.js"></script>
<link href="css/validation.css" rel="stylesheet" type="text/css" />
<link href="css/formregistrazione.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/formregistrazione.js"></script>
</head>
<body>
<div id="contenitore">
  <div id="logo">	<img src="Images/logo nuovo biblio2tondo.jpg" width="974" height="200" alt="" /></div>
<?php
	include 'header3.php';
?>
        <div class="facebook">
   <a href='http://www.facebook.com/MrChip63' target=_blank><img src="Images/facebook.png" width="30" height="30" alt="Facebook" /></a></div>
        </div>
        <div id="contenuto" class="clearfix">
          <p style="margin-top: 2px;">&nbsp;</p>
          <img id="top" src="http://forum.mrwebmaster.it/images/top.png" alt="" />
	<div id="form_container">
		<h1><a>Modulo Registrazione Nuovo Utente</a></h1>
	<?php
		if(!isset($_GET['passkey'])){
			if(!isset($_POST['invia'])){ ?>
		<form id="form" class="appnitro"  method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
					<div class="form_description">
			<h2>Modulo Registrazione Nuovo Utente</h2>
		</div>
			<ul >
					<li id="li_1" >
		<label class="description" for="nome">Nome </label>
		<span>
			<input id="nome" name="nome" class="element text" maxlength="255" size="8" value=""/>
			<label>Nome</label>
			<script type="text/javascript">
			var campo = new LiveValidation(‘nome’, {validMessage:"OK!"});
			campo.add(Validate.Presence, {failureMessage:"Il campo deve essere compilato."});
			</script>
		</span>
		<span>
			<input id="cognome" name="cognome" class="element text" maxlength="255" size="14" value=""/>
			<label>Cognome</label>
			<script type="text/javascript">
			var campo = new LiveValidation(‘cognome’,{onlyOnBlur: true, validaMessage:"OK!"});
			campo.add(Validate.Presence, {failureMessage:"Il campo deve essere compilato."});
			</script>
		</span><p class="guidelines" id="guide_1"><small>Metti il tuo Nome e Cognome</small></p>
		</li>
		<li id="li_2" >
		<label class="description" for="età">Età </label>
		<div>
			<input id="età" name="età" class="element text medium" type="text" maxlength="255" value=""/>
		</div><p class="guidelines" id="guide_2"><small>Inserisci la tua età</small></p>
		<script type="text/javascript">
			var campo = new LiveValidation(‘età’, {onlyOnBlur: true, validaMessage:"OK!"});
			campo.add(Validate.Presence, {onlyOnBlur: true, failureMessage:"Il campo deve essere compilato."});
			campo.add(Validate.Numericality, {onlyOnBlur: true, notANumberMessage:"Puoi inserire solo numeri."});
			</script>
		</li>
		<li id="li_3" >
		<label class="description" for="interessi">Interessi e passioni </label>
		<div>
			<textarea id="interessi" name="interessi" class="element textarea medium" cols="" rows=""></textarea>
		</div><p class="guidelines" id="guide_3"><small>Aggiungi tutto quello che ti piace</small></p>
		</li>
		<li id="li_4" >
		<label class="description" for="username">Username </label>
		<div>
			<input id="username" name="username" class="element text medium" type="text" maxlength="255" value=""/>
			<script type="text/javascript">
			var Username = new LiveValidation(‘Username’, {onlyOnBlur: true, validaMessage:"OK!"});
			Username.add(Validate.Presence, {onlyOnBlur: true, failureMessage:"Il campo deve essere compilato."});
			Username.add(Validate.Lenght, {onlyOnBlur: true,  maximum: 12, tooLongMessage:"Puoi mettere un massimo di 12 caratteri"});
			Username.add(Validate.Lenght, {onlyOnBlur: true,  minimum: 4, tooShortMessage:"Puoi mettere un minimo di 4 caratteri"});
			</script>
		</div><p class="guidelines" id="guide_4"><small>Inserisci un nome di fantasia</small></p>
		</li>
		<li id="li_5" >
		<label class="description" for="password">Password </label>
		<div>
			<input id="password" name="password" class="element text medium" type="text" maxlength="255" value=""/>
		</div>
		</li>
		<li id="li_6" >
		<label class="description" for="password2">Reinserisci la Password </label>
		<div>
			<input id="password2" name="password2" class="element text medium" type="text" maxlength="255" value=""/>
		</div>
		</li>
		<li id="li_7" >
		<label class="description" for="email">Email </label>
		<div>
			<input id="email" name="email" class="element text medium" type="text" maxlength="255" value=""/>
			<script type="text/javascript">
			var campo = new LiveValidation(‘Email’, {onlyOnBlur: true, validaMessage:"OK!"});
			campo.add(Validate.Presence, {onlyOnBlur: true, failureMessage:"Il campo deve essere compilato."});
			campo.add(Validate.Email, {onlyOnBlur: true, failureMessage:"Devi inserire un indirizzo mail valido!"});
			campo.add(Validate.Lenght, {onlyOnBlur: true, minimum: 4, tooShortMessage:"Puoi mettere un minimo di 4 caratteri"});
			</script>
		</div>
		</li>

					<li class="buttons">
					  <input id="rest" class="button_text" type="reset" name="reset" value="Reset" />
				<input id="registrazione" class="button_text" type="submit" name="submit" value="Registrazione" />
		</li>
			</ul>

		</form>

<?php	} else {
	//funzione per verificare che non sia alterato il testo md5 della password
	function ver_testo($testo,$min,$max){
		$pattern="/^[a-zA-Z0-9]{".$min.",".$max."}$/";//non prende direttamente il min e il max
		if(preg_match($pattern, $testo)){
			//testo ok
			return TRUE;
		}else{
			return FALSE;
		}
	}
	if($_SERVER['REQUEST_METHOD'] == 'POST'){
	$nome = trim($_POST['nome']);
	$username = trim($_POST['username']);
	$cognome = trim($_POST['cognome']);
	$età = trim($_POST['età']);
	$password = trim($_POST['password']);
	$password2 = trim($_POST['password2']);
	$email = trim($_POST['email']);
	//preparo un messaggio a vuoto per gli errori
	$ok_ko="";
	if(!ver_testo($username,4,10))($ok_ko.="Username non corretto, deve essere compreso tra 4 e 10 caratteri<br />");
	if(!ver_testo($password,6,12))($ok_ko.="La password deve essere composta da 6 a 12 caratteri <br />");
	if(!ver_testo($password2,6,12)){$ok_ko.="La password di conferma non coincide con la prima <br />";}
	if($password != $password2){$ok_ko.="Le password non coincidono <br />";}
	if(!filter_var($email, FILTER_VALIDATE_EMAIL)){$ok_ko.="L'indirizzo email non è valido <br />";}
	if($età==""){$ok_ko.="Devi inserire la tua età <br />";};
	if($ok_ko==""){
		//se è rimasto vuoto non ci sono errori

		// creazione di un codice di conferma in MD5
		$codiceconferma = md5(uniqid(rand()));
		$username = mysql_real_escape_string((strtolower($username))); //salvo il nickname tutto in minuscolo onde evitare problemi.
		$email = mysql_real_escape_string(strtolower($email)); //metto in minuscolo la mail

		//Verifico che non ci sia un username uguale a quello inserito nel form
		$verificauseremail = mysql_query("SELECT id FROM biblionet nuova ok WHERE username='$username' OR email='$email'");

		if(mysql_num_rows($verificauseremail)>0){
			//avvisi e torni al form pulito
			echo "ATTENZIONE: Username o Email già esistenti, scegline un altro. <br />";
			echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
		}else{
			$nome = mysql_real_escape_string($nome);
			$cognome = mysql_real_escape_string($cognome);
			$età = mysql_real_escape_string($età);
			$username = mysql_real_escape_string($username);
			$email = mysql_real_escape_string($email);
			$password = mysql_real_escape_string($password);
			$inviautentitemp = "INSERT INTO biblionet_nuova_temp (codiceconferma, username, età, cognome, nome, password, email) VALUES ('$nome', '$cognome', '$età', '$codiceconferma', '$username', '$password', '$email')";
			if(mysql_query($inviautentitemp)){
				//se tutto è OK da qua preparo l'invio della mail di conferma per l'avvenuta registrazione.
				include_once('class.phpmailer.php');
				$mail = new PHPmailer();
				$mail->IsSMTP();
				$mail->isHTML(true);
				$mail->SMTPDebug = true;
				$mail->Host = "smtp.fastwebnet.it";
				$mail->Port = "25";
				$mail->SMTPAuth = true;
				$mail->Username = "[email protected]";
				$mail->Password = "*******";
				// Impostazioni invio mail al cliente
				$mail->Setfrom ("[email protected]","Biblionet");   //Inserire la mail dell'amministratore ed il nome del sito
				$mail->AddReplyTo("[email protected]","Amministratore");
				$mail->AddAddress ($email); //Mail che riceverà chi si iscrive
				$mail->AltBody = "Il tuo client di posta non è settato per la ricezione in HTML";
				$mail->Subject = "Conferma di registrazione al sito www.biblionetsanmaurizio.com";
				//poi prova a modificare il testo da inviare
				$testo="<p>Ecco il tuo codice di attivazione</p><br />";
				$testo.="<p>Clicca sul link per confermare la registrazione</p><br />";
				$testo.="<a href=\"http://siti/Biblionet%20Nuova%20OK/registrazione.php?passkey=$codiceconferma\">Clicca qui</a>";
				$mail->Body =$testo;

				if ($mail->Send()){
					echo "Tra poco riceverai una mail con il codice di attivazione per confermare l'iscrizione";
				}else{
					echo "Si è verificato un errore di trasmissione riprova più tardi";
					// e dopo 3 secondi torno automaticamente al form ripulito
					//echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
					//i secondi di attesa possono essere aumentati o diminuiti
				}//chiudo if/else invio

			} else {
				echo "ERRORE di comnnesione, ti preghiamo di riprovare più tardi<br />";
				echo "<meta http-equiv='Refresh' content='300; URL=index2.php'>";
			}//chiudo if/else errore sul db
		}//chiudo if/else username-email duplicato
	}else{
		echo $ok_ko;
		echo "<meta http-equiv='Refresh' content='300; URL=index2.php'>";
	}
	}
	//chiudo if/else $ok_ko
	//poi tutti i echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	//potresti eliminarli e metterne un unico qui
}
		} else {

			$passkey = htmlspecialchars($_GET['passkey']);
			$sqlrecuperauser = "SELECT * FROM biblionet_nuova_temp WHERE codiceconferma = '$passkey'";
			$risultatouser = mysql_query($sqlrecuperauser);
			if($risultatouser) {
				$contauser = mysql_num_rows($risultatouser);
				if($contauser == 1){
					$rows = mysql_fetch_array($risultatouser);
					$username = $rows['username'];
					$email = $rows['email'];
					$password = $rows ['password'];
					$passwordcript = md5($password);
					$sqlconfermauser = mysql_query("INSERT INTO biblionet nuova ok (nome, cognome, età, username, password, email) VALUES ('$nome', '$cognome', '$età', '$username', '$passwordcript', '$email')");
					if ($sqlconfermauser) {
						echo "Il tuo account è stato attivato con successo, da adesso potrai accedere alle pagine del sito inserendo i tuoi dati.";
						$sqleliminadati = mysql_query("DELETE FROM biblionet_nuova_temp WHERE codiceconferma = '$passkey'");
					} else {
						echo "C'è stato un errore, se hai sbagliato qualcosa riprova, altrimenti segnalacelo. Lo correggeremo il prima possibile!";
					}
				}
			}
		}
	?>
	</div>
	<img id="bottom" src="http://forum.mrwebmaster.it/images/bottom.png" alt="" />
        </div>
		<div class="vuoto"></div>
      	<div id="footer"><p>Copyright - Tutti i diritti sono riservati - E' vietata la riproduzione anche parziale</p></div>
</body>
</html>

Grazie a tutti
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
prima una cosa:
racchiudi sempre il codice negli appositi tag (seconda riga formattazione del post ultime tre iconcine, nell'ordine CODE, HTML, PHP) e non mettere troppe righe vuote è già di per se un lenzuolo.
comunque ci do un occhio e poi ti so dire
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
ciao
prima una cosa:
racchiudi sempre il codice negli appositi tag (seconda riga formattazione del post ultime tre iconcine, nell'ordine CODE, HTML, PHP) e non mettere troppe righe vuote è già di per se un lenzuolo.
comunque ci do un occhio e poi ti so dire

Aaaaaaaaaaaaaaaaaaa ecco dove si trovano le iconcine PHP HTML etc. Le cercavo ieri ma non le trovavo. Scusa per il post da lenzuolo, e sopratutto per il codice infinito. Ma all'inizio mi serve per capire il tutto. Comunque grazie ancora per l'aiuto.:beer::beer:
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
lato server con php non ho problemi e comunque devi fare la verifica lato server con js lato client non è sufficiente.
per il js è meglio che ti risponda qualcuno che ne sa più di me
 

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Ho modificato un po il codice che allego qua

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--#include virtual="/riservato/_private/logon.inc"-->
<title>Biblionet - Registrazione</title>
<link href="css/reset.css" type="text/css" rel="stylesheet" />
<link href="css/Master.css" type="text/css" rel="stylesheet" />
<link href="css/formregistrazione.css" rel="stylesheet" type="text/css" />
<link href="css/validation.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/validation2.js"></script>
<script type="text/javascript" src="js/formregistrazione.js"></script>





</head>

<body>
<div id="contenitore">
  <div id="logo">	<img src="Images/logo nuovo biblio2tondo.jpg" width="974" height="200" alt="" /></div>

<?php

	include 'header3.php';

?>
        <div class="facebook">
   <a href='http://www.facebook.com/MrChip63' target=_blank><img src="Images/facebook.png" width="30" height="30" alt="Facebook" /></a></div>

        </div>
        <div id="contenuto" class="clearfix">

          <p style="margin-top: 2px;">&nbsp;</p>

          <img id="top" src="http://forum.mrwebmaster.it/images/top.png" alt="" />
	<div id="form_container">

		<h1><a>Modulo Registrazione Nuovo Utente</a></h1>
	<?php
		if(!isset($_GET['passkey'])){
			if(!isset($_POST['invia'])){ ?>

		<form id="form" class="appnitro"  method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
					<div class="form_description">
			<h2>Modulo Registrazione Nuovo Utente</h2>
		</div>
			<ul >
					<li id="li_1" >
		<label class="description" for="nome">Nome </label>
		<span>
			<input id="nome" name="nome" class="element text" maxlength="255" size="8" value=""/>
			<label>Nome</label>
		</span>
		<span>
			<input id="cognome" name="cognome" class="element text" maxlength="255" size="14" value=""/>
			<label>Cognome</label>
		</span><p class="guidelines" id="guide_1"><small>Metti il tuo Nome e Cognome:</small></p>
		</li>
		<li id="li_2" >
		<label class="description" for="compleanno">Compleanno&nbsp&nbsp<small>(gg/mm/anno):</small></label>
		<div>
			<input id="compleanno" name="Compleanno" class="element text medium" type="text" maxlength="255" onClick="DataTest()" value=""/>
		</div><p class="guidelines" id="guide_2"><small>Quando sei nato/a?</small></p>
		</li>
		<li id="li_3" >
		<label class="description" for="interessi">Interessi e passioni </label>
		<div>
			<textarea id="interessi" name="interessi" class="element textarea medium" cols="" rows=""></textarea>
		</div><p class="guidelines" id="guide_3"><small>Aggiungi tutto quello che ti piace</small></p>
		</li>
		<li id="li_4" >
		<label class="description" for="username">Username </label>
		<div>
			<input id="username" name="username" class="element text medium" type="text" maxlength="255" value=""/>
		</div><p class="guidelines" id="guide_4"><small>Inserisci un nome di fantasia</small></p>
		</li>
		<li id="li_5" >
		<label class="description" for="password">Password </label>
		<div>
			<input id="password" name="password" class="element text medium" type="password" maxlength="255" value=""/>
		</div><p class="guidelines" id="guide_5"><small>Inserisci una password</small></p>
		</li>
		<li id="li_6" >
		<label class="description" for="password2">Reinserisci la Password </label>
		<div>
			<input id="password2" name="password2" class="element text medium" type="password" maxlength="255" value=""/>
		</div><p class="guidelines" id="guide_6"><small>Re-inserisci la password per sicurezza</small></p>
		</li>
		<li id="li_7" >
		<label class="description" for="email">Email </label>
		<div>
			<input id="email" name="email" class="element text medium" type="text" maxlength="255" value=""/>
		</div><p class="guidelines" id="guide_7"><small>Inserisci la tua mail</small></p>
		</li>

					<li class="buttons">
					  <input id="rest" class="button_text" type="reset" name="reset" value="Reset" />
				<input id="registrazione" class="button_text" type="submit" name="submit" value="Registrazione" />
		</li>
			</ul>

		</form>

<?php	} else {
			//funzione per verificare che non sia alterato il testo md5 della password
			function ver_testo($testo,$min,$max){
				$pattern="/^[a-zA-Z0-9]{".$min.",".$max."}$/";//non prende direttamente il min e il max
				if(preg_match($pattern, $testo)){
					//testo ok
					return TRUE;
				}else{
					return FALSE;
				}
			}
			if($_SERVER['REQUEST_METHOD'] == 'POST'){
				$username = trim($_POST['username']);
				$password = trim($_POST['password']);
				$password2 = trim($_POST['password2']);
				$email = trim($_POST['email']);
				//preparo un messaggio a vuoto per gli errori
				$ok_ko="";
				if(!ver_testo($username,4,10))($ok_ko.="Username non corretto, deve essere compreso tra 4 e 10 caratteri<br />");
				if(!ver_testo($password,6,12))($ok_ko.="La password deve essere composta da 6 a 12 caratteri <br />");
				if(!ver_testo($password2,6,12)){$ok_ko.="La password di conferma non coincide con la prima <br />";}
				if($password != $password2){$ok_ko.="Le password non coincidono <br />";}
				if(!filter_var($email, FILTER_VALIDATE_EMAIL)){$ok_ko.="L'indirizzo email non è valido <br />";}
				if($ok_ko==""){//se è rimasto vuoto non ci sono errori

		// creazione di un codice di conferma in MD5
		$codiceconferma = md5(uniqid(rand()));
		$username = mysql_real_escape_string((strtolower($username))); //salvo il nickname tutto in minuscolo onde evitare problemi.
		$email = mysql_real_escape_string(strtolower($email)); //metto in minuscolo la mail

		//Verifico che non ci sia un username uguale a quello inserito nel form
		$verificauseremail = mysql_query("SELECT id FROM biblionet nuova ok WHERE username='$username' OR email='$email'");

		if(mysql_num_rows($verificauseremail)>0){
			//avvisi e torni al form pulito
			echo "ATTENZIONE: Username o Email già esistenti, scegline un altro. <br />";
			echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
		}else{
			$nome = mysql_real_escape_string($nome);
			$cognome = mysql_real_escape_string($cognome);
			$compleanno = mysql_real_escape_string($compleanno);
			$username = mysql_real_escape_string($username);
			$email = mysql_real_escape_string($email);
			$password = mysql_real_escape_string($password);
			$inviautentitemp = "INSERT INTO biblionet_nuova_temp (codiceconferma, username, compleanno, cognome, nome, password, email) VALUES ('$nome', '$cognome', '$compleanno', '$codiceconferma', '$username', '$password', '$email')";
			if(mysql_query($inviautentitemp)){
				//se tutto è OK da qua preparo l'invio della mail di conferma per l'avvenuta registrazione.
				include_once('class.phpmailer.php');
				$mail = new PHPmailer();
				$mail->IsSMTP();
				$mail->isHTML(true);
				$mail->SMTPDebug = true;
				$mail->Host = "smtp.fastwebnet.it";
				$mail->Port = "25";
				$mail->SMTPAuth = true;
				$mail->Username = "[email protected]";
				$mail->Password = "******";
				// Impostazioni invio mail al cliente
				$mail->Setfrom ("[email protected]","Biblionet");   //Inserire la mail dell'amministratore ed il nome del sito
				$mail->AddReplyTo("[email protected]","Amministratore");
				$mail->AddAddress ($email); //Mail che riceverà chi si iscrive
				$mail->AltBody = "Il tuo client di posta non è settato per la ricezione in HTML";
				$mail->Subject = "Conferma di registrazione al sito www.sito.com";
				//poi prova a modificare il testo da inviare
				$testo="<p>Ecco il tuo codice di attivazione</p><br />";
				$testo.="<p>Clicca sul link per confermare la registrazione</p><br />";
				$testo.="<a href=\"http://siti/Biblionet%20Nuova%20OK/registrazione.php?passkey=$codiceconferma\">Clicca qui</a>";
				$mail->Body =$testo;

				if ($mail->Send()){
					echo "Tra poco riceverai una mail con il codice di attivazione per confermare l'iscrizione";
				}else{
					echo "Si è verificato un errore di trasmissione riprova più tardi";
					// e dopo 3 secondi torno automaticamente al form ripulito
					//echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
					//i secondi di attesa possono essere aumentati o diminuiti
				}//chiudo if/else invio

			} else {
				echo "ERRORE di comnnesione, ti preghiamo di riprovare più tardi<br />";
				echo "<meta http-equiv='Refresh' content='3; URL=index2.php'>";
			}//chiudo if/else errore sul db
		}//chiudo if/else username-email duplicato
				}else{
					echo $ok_ko;
					echo "<meta http-equiv='Refresh' content='3; URL=index2.php'>";
				}
			}
	//chiudo if/else $ok_ko
	//poi tutti i echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	//potresti eliminarli e metterne un unico qui
}

		} else {

			$passkey = htmlspecialchars($_GET['passkey']);

			$sqlrecuperauser = "SELECT * FROM biblionet_nuova_temp WHERE codiceconferma = '$passkey'";
			$risultatouser = mysql_query($sqlrecuperauser);

			if($risultatouser) {

				$contauser = mysql_num_rows($risultatouser);

				if($contauser == 1){

					$rows = mysql_fetch_array($risultatouser);
					$username = $rows['username'];
					$email = $rows['email'];
					$password = $rows ['password'];

					$passwordcript = md5($password);

					$sqlconfermauser = mysql_query("INSERT INTO biblionet nuova ok (nome, cognome, compleanno, username, password, email) VALUES ('$nome', '$cognome', '$compleanno', '$username', '$passwordcript', '$email')");

					if ($sqlconfermauser) {

						echo "Il tuo account è stato attivato con successo, da adesso potrai accedere alle pagine del sito inserendo i tuoi dati.";
						$sqleliminadati = mysql_query("DELETE FROM biblionet_nuova_temp WHERE codiceconferma = '$passkey'");

					} else {

						echo "C'è stato un errore, se hai sbagliato qualcosa riprova, altrimenti segnalacelo. Lo correggeremo il prima possibile!";

					}

				}

			}

		}

	?>





	</div>
	<img id="bottom" src="http://forum.mrwebmaster.it/images/bottom.png" alt="" />


        </div>


		<div class="vuoto"></div>
      	<div id="footer"><p>Copyright - Tutti i diritti sono riservati - E' vietata la riproduzione anche parziale</p></div>

</body>
</html>

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!--#include virtual="/riservato/_private/logon.inc"-->
<title>Biblionet - Registrazione</title>
<link href="css/reset.css" type="text/css" rel="stylesheet" />
<link href="css/Master.css" type="text/css" rel="stylesheet" />
<link href="css/formregistrazione.css" rel="stylesheet" type="text/css" />
<link href="css/validation.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="js/validation2.js"></script>
<script type="text/javascript" src="js/formregistrazione.js"></script>





</head>

<body>
<div id="contenitore">
  <div id="logo">	<img src="Images/logo nuovo biblio2tondo.jpg" width="974" height="200" alt="" /></div>

<?php

	include 'header3.php';

?>
        <div class="facebook">
   <a href='http://www.facebook.com/MrChip63' target=_blank><img src="Images/facebook.png" width="30" height="30" alt="Facebook" /></a></div>

        </div>
        <div id="contenuto" class="clearfix">

          <p style="margin-top: 2px;">&nbsp;</p>

          <img id="top" src="http://forum.mrwebmaster.it/images/top.png" alt="" />
	<div id="form_container">

		<h1><a>Modulo Registrazione Nuovo Utente</a></h1>
	<?php
		if(!isset($_GET['passkey'])){
			if(!isset($_POST['invia'])){ ?>

		<form id="form" class="appnitro"  method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>">
					<div class="form_description">
			<h2>Modulo Registrazione Nuovo Utente</h2>
		</div>
			<ul >
					<li id="li_1" >
		<label class="description" for="nome">Nome </label>
		<span>
			<input id="nome" name="nome" class="element text" maxlength="255" size="8" value=""/>
			<label>Nome</label>
		</span>
		<span>
			<input id="cognome" name="cognome" class="element text" maxlength="255" size="14" value=""/>
			<label>Cognome</label>
		</span><p class="guidelines" id="guide_1"><small>Metti il tuo Nome e Cognome:</small></p>
		</li>
		<li id="li_2" >
		<label class="description" for="compleanno">Compleanno&nbsp&nbsp<small>(gg/mm/anno):</small></label>
		<div>
			<input id="compleanno" name="Compleanno" class="element text medium" type="text" maxlength="255" onClick="DataTest()" value=""/>
		</div><p class="guidelines" id="guide_2"><small>Quando sei nato/a?</small></p>
		</li>
		<li id="li_3" >
		<label class="description" for="interessi">Interessi e passioni </label>
		<div>
			<textarea id="interessi" name="interessi" class="element textarea medium" cols="" rows=""></textarea>
		</div><p class="guidelines" id="guide_3"><small>Aggiungi tutto quello che ti piace</small></p>
		</li>
		<li id="li_4" >
		<label class="description" for="username">Username </label>
		<div>
			<input id="username" name="username" class="element text medium" type="text" maxlength="255" value=""/>
		</div><p class="guidelines" id="guide_4"><small>Inserisci un nome di fantasia</small></p>
		</li>
		<li id="li_5" >
		<label class="description" for="password">Password </label>
		<div>
			<input id="password" name="password" class="element text medium" type="password" maxlength="255" value=""/>
		</div><p class="guidelines" id="guide_5"><small>Inserisci una password</small></p>
		</li>
		<li id="li_6" >
		<label class="description" for="password2">Reinserisci la Password </label>
		<div>
			<input id="password2" name="password2" class="element text medium" type="password" maxlength="255" value=""/>
		</div><p class="guidelines" id="guide_6"><small>Re-inserisci la password per sicurezza</small></p>
		</li>
		<li id="li_7" >
		<label class="description" for="email">Email </label>
		<div>
			<input id="email" name="email" class="element text medium" type="text" maxlength="255" value=""/>
		</div><p class="guidelines" id="guide_7"><small>Inserisci la tua mail</small></p>
		</li>

					<li class="buttons">
					  <input id="rest" class="button_text" type="reset" name="reset" value="Reset" />
				<input id="registrazione" class="button_text" type="submit" name="submit" value="Registrazione" />
		</li>
			</ul>

		</form>

<?php	} else {
			//funzione per verificare che non sia alterato il testo md5 della password
			function ver_testo($testo,$min,$max){
				$pattern="/^[a-zA-Z0-9]{".$min.",".$max."}$/";//non prende direttamente il min e il max
				if(preg_match($pattern, $testo)){
					//testo ok
					return TRUE;
				}else{
					return FALSE;
				}
			}
			if($_SERVER['REQUEST_METHOD'] == 'POST'){
				$username = trim($_POST['username']);
				$password = trim($_POST['password']);
				$password2 = trim($_POST['password2']);
				$email = trim($_POST['email']);
				//preparo un messaggio a vuoto per gli errori
				$ok_ko="";
				if(!ver_testo($username,4,10))($ok_ko.="Username non corretto, deve essere compreso tra 4 e 10 caratteri<br />");
				if(!ver_testo($password,6,12))($ok_ko.="La password deve essere composta da 6 a 12 caratteri <br />");
				if(!ver_testo($password2,6,12)){$ok_ko.="La password di conferma non coincide con la prima <br />";}
				if($password != $password2){$ok_ko.="Le password non coincidono <br />";}
				if(!filter_var($email, FILTER_VALIDATE_EMAIL)){$ok_ko.="L'indirizzo email non è valido <br />";}
				if($ok_ko==""){//se è rimasto vuoto non ci sono errori

		// creazione di un codice di conferma in MD5
		$codiceconferma = md5(uniqid(rand()));
		$username = mysql_real_escape_string((strtolower($username))); //salvo il nickname tutto in minuscolo onde evitare problemi.
		$email = mysql_real_escape_string(strtolower($email)); //metto in minuscolo la mail

		//Verifico che non ci sia un username uguale a quello inserito nel form
		$verificauseremail = mysql_query("SELECT id FROM biblionet nuova ok WHERE username='$username' OR email='$email'");

		if(mysql_num_rows($verificauseremail)>0){
			//avvisi e torni al form pulito
			echo "ATTENZIONE: Username o Email già esistenti, scegline un altro. <br />";
			echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
		}else{
			$nome = mysql_real_escape_string($nome);
			$cognome = mysql_real_escape_string($cognome);
			$compleanno = mysql_real_escape_string($compleanno);
			$username = mysql_real_escape_string($username);
			$email = mysql_real_escape_string($email);
			$password = mysql_real_escape_string($password);
			$inviautentitemp = "INSERT INTO biblionet_nuova_temp (codiceconferma, username, compleanno, cognome, nome, password, email) VALUES ('$nome', '$cognome', '$compleanno', '$codiceconferma', '$username', '$password', '$email')";
			if(mysql_query($inviautentitemp)){
				//se tutto è OK da qua preparo l'invio della mail di conferma per l'avvenuta registrazione.
				include_once('class.phpmailer.php');
				$mail = new PHPmailer();
				$mail->IsSMTP();
				$mail->isHTML(true);
				$mail->SMTPDebug = true;
				$mail->Host = "smtp.xxxxxxxx";
				$mail->Port = "25";
				$mail->SMTPAuth = true;
				$mail->Username = "[email protected]";
				$mail->Password = "aaaaaaaa";
				// Impostazioni invio mail al cliente
				$mail->Setfrom ("[email protected]","Biblionet");   //Inserire la mail dell'amministratore ed il nome del sito
				$mail->AddReplyTo("[email protected]","Amministratore");
				$mail->AddAddress ($email); //Mail che riceverà chi si iscrive
				$mail->AltBody = "Il tuo client di posta non è settato per la ricezione in HTML";
				$mail->Subject = "Conferma di registrazione al sito www.biblionetsanmaurizio.com";
				//poi prova a modificare il testo da inviare
				$testo="<p>Ecco il tuo codice di attivazione</p><br />";
				$testo.="<p>Clicca sul link per confermare la registrazione</p><br />";
				$testo.="<a href=\"http://siti/Biblionet%20Nuova%20OK/registrazione.php?passkey=$codiceconferma\">Clicca qui</a>";
				$mail->Body =$testo;

				if ($mail->Send()){
					echo "Tra poco riceverai una mail con il codice di attivazione per confermare l'iscrizione";
				}else{
					echo "Si è verificato un errore di trasmissione riprova più tardi";
					// e dopo 3 secondi torno automaticamente al form ripulito
					//echo "<meta http-equiv='Refresh' content='3; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
					//i secondi di attesa possono essere aumentati o diminuiti
				}//chiudo if/else invio

			} else {
				echo "ERRORE di comnnesione, ti preghiamo di riprovare più tardi<br />";
				echo "<meta http-equiv='Refresh' content='3; URL=index2.php'>";
			}//chiudo if/else errore sul db
		}//chiudo if/else username-email duplicato
				}else{
					echo $ok_ko;
					echo "<meta http-equiv='Refresh' content='3; URL=index2.php'>";
				}
			}
	//chiudo if/else $ok_ko
	//poi tutti i echo "<meta http-equiv='Refresh' content='4; URL=".htmlspecialchars($_SERVER['PHP_SELF'])."'>";
	//potresti eliminarli e metterne un unico qui
}

		} else {

			$passkey = htmlspecialchars($_GET['passkey']);

			$sqlrecuperauser = "SELECT * FROM biblionet_nuova_temp WHERE codiceconferma = '$passkey'";
			$risultatouser = mysql_query($sqlrecuperauser);

			if($risultatouser) {

				$contauser = mysql_num_rows($risultatouser);

				if($contauser == 1){

					$rows = mysql_fetch_array($risultatouser);
					$username = $rows['username'];
					$email = $rows['email'];
					$password = $rows ['password'];

					$passwordcript = md5($password);

					$sqlconfermauser = mysql_query("INSERT INTO biblionet nuova ok (nome, cognome, compleanno, username, password, email) VALUES ('$nome', '$cognome', '$compleanno', '$username', '$passwordcript', '$email')");

					if ($sqlconfermauser) {

						echo "Il tuo account è stato attivato con successo, da adesso potrai accedere alle pagine del sito inserendo i tuoi dati.";
						$sqleliminadati = mysql_query("DELETE FROM biblionet_nuova_temp WHERE codiceconferma = '$passkey'");

					} else {

						echo "C'è stato un errore, se hai sbagliato qualcosa riprova, altrimenti segnalacelo. Lo correggeremo il prima possibile!";

					}

				}

			}

		}

	?>





	</div>
	<img id="bottom" src="http://forum.mrwebmaster.it/images/bottom.png" alt="" />


        </div>


		<div class="vuoto"></div>
      	<div id="footer"><p>Copyright - Tutti i diritti sono riservati - E' vietata la riproduzione anche parziale</p></div>

</body>
</html>
ma non ne vengo a capo.
Come posso fare per capire dove sbaglio? Primo, non riesco a fare il controllo su i campi, non ho messaggi di allert, non ho errori e come si vede ho abilitato il debug nel codice.
 
Ultima modifica di un moderatore:

Paperino78

Utente Attivo
30 Giu 2012
409
0
16
Milano
Scusate il doppio post, non era voluto l'inserimento del codice senza i tag, e con dati sensibili in chiaro. :incazz2::incazz2::incazz2::incazz2::incazz2::incazz2::incazz2::incazz2::incazz2::incazz2::incazz2::incazz2::incazz2::incazz2::incazz2::incazz2::incazz2:

se qualcuno del forum potesse riparare al danno che stupidamente ho fatto.
 
Discussioni simili
Autore Titolo Forum Risposte Data
E Verifica dell'Età Javascript 0
MarcoGrazia Verifica di una stringa o di un nome proveniente da form Snippet PHP 0
G Problema verifica palindromo e verifica pari e dispari javascript Javascript 0
D verifica codice fiscale persona fisica /aziendale stesso campo HTML e CSS 1
F [PHP] Verifica utente presente nel DB PHP 13
gandalf1959 [PHP] Verifica password per accesso ad area riservata PHP 3
M [Javascript] Verifica calcolo prima di fare insert Javascript 13
Samuele Ronzani [PHP] Verifica se un dato esiste già PHP 1
S [Javascript] Verifica separatore decimale sistema operativo Javascript 2
felino EXCEL: verifica dati mancanti tra due sheet Windows e Software 2
A Verifica validità data in Java Java 2
kikki882 verifica account - dati personali Social Media Marketing 0
S [PHP] Verifica dati tramite form e annullamento codice inserito PHP 7
L Wordpress: consiglio plugin per "verifica disponibilità" WordPress 0
MarcoGrazia Verifica di un indirizzo email Snippet PHP 0
MarcoGrazia [PHP] Verifica dell'input utente tramite funzione generica. PHP 0
francesco87 [Vendo] Verifica pagina (bollino grigio) Annunci servizi di Social Media Marketing 0
M [PHP] Verifica formato data in tempo reale PHP 2
WebDr [Javascript] verifica input Javascript 8
R [WordPress] Accesso al db e verifica credenziali (password criptata) WordPress 1
A VENDO ACCOUNT DI DIVERSE PIATTAFORME E VERIFICA FACEBOOK ACCOUNT(PHOTO TAG VERIFICATION,VERIFICA TEL Annunci servizi di Social Media Marketing 2
P verifica caratteri per email e password PHP 17
S Verifica Esistenza Codice Fiscale PHP 5
C verifica e invio ordine php PHP 19
MarcoGrazia Verifica della data inserita in un form ( utilizzando bootstrap ) Javascript 7
G verifica caricamento foto originali su social network o sito di hosting immagini Discussioni Varie 3
A Strumenti "ufficiali" per la verifica dei Cookie HTML e CSS 2
A verifica di proprietà bing webmaster tool Google Search Console 0
P Verifica form solo con php senza javascript PHP 15
D Verifica inserimento dati form PHP 12
P verifica utente in db PHP 6
L [MySQL] Verifica disponibilità camera MySQL 32
L vendo account facebook femmina 5.000 amici con verifica cell e tag superati Annunci servizi di Social Media Marketing 0
V verifica form jQuery 5
filippino Verifica email per attribuzione dei contenuti SEO e Posizionamento 0
N Verifica email di registrazione PHP 0
D Verifica plug-in aggiornati di Firefox non vede gli aggiornamenti effettivi Windows e Software 0
il_bauscia Verifica segnale operatore 5ghz Reti LAN e Wireless 2
Virginia86 [risolto] Problema select e verifica form PHP 38
G php asincrono con ajax 2 campi di verifica PHP 1
P Problema ocon verifica campo in javascript Javascript 7
M Cosa ne pensate del mio primo file PHP (verifica disponibilità stanze)? PHP 0
M adsmanager e messaggio di verifica email Joomla 0
L verifica mail in db con jquery e ajax. Aiuto jQuery 9
asevenx modulo registrazione utenti, cicli if di verifica PHP 9
A Espressione Regolare per verifica stringa PHP 14
A verifica codice PHP 7
M Verifica HTTP o HTTPS PHP 1
M Verifica se una Funzione appartiene ad una Classe PHP 9
F Esiste un programma che verifica la home page e la corregge automaticamente? HTML e CSS 7

Discussioni simili