Form Registrazione con conferma via email - problema

Dylan VDj Canziani

Nuovo Utente
26 Mar 2015
11
0
0
buongiorno a tutti! ho creato seguendo i vari tutorial un modulo registrazione utenti con conferma via email! I dati vengono salvati su un DB mysql.

Il problema è che quando arriva l'email per la verifica della registrazione, cliccando sul link dice sempre "impossibile verificare l'account" vi posto il codice magari qualcuno più esperto mi sa dare una dritta;

PHP:
<?php
 
class NewUser
{
	public $conn;
 
		public function AddUser()
		{
			$this->ErrorReport();
		}
 
		protected function DbConnect()
		{
			include "db_con.php";
 
			$this->conn = mysql_connect('xxxxxx', 'xxxxx', 'xxxxxxxx') OR die("Impossibile connettersi al database");
			mysql_select_db($db, $this->conn);
		}
 
		protected function IsEmptyField()
		{
			if(empty($_POST['nome']) OR empty($_POST['cognome']) OR empty($_POST['email']))
			{
				return TRUE;
			}
			else
			{
				return FALSE;
			}
		}
 
 
	
		protected function nomeExists()
		{
			$this->DbConnect();
			$sql = "SELECT nome FROM iscrizione WHERE nome='$_POST[nome]'";
			$res = mysql_query($sql, $this->conn);
			if($row = mysql_fetch_array($res))
			{
				mysql_close($this->conn);
				return TRUE;
			}
			else
			{
				mysql_close($this->conn);
				return FALSE;
			}
		}
 
		protected function EmailExists()
		{
			$this->DbConnect();
			$sql = "SELECT email FROM iscrizione WHERE email='$_POST[email]'";
 
			$res = mysql_query($sql, $this->conn);
			if($row = mysql_fetch_array($res))
			{
				mysql_close($this->conn);
				return TRUE;
			}
			else
			{
				mysql_close($this->conn);
				return FALSE;
			}
		}
 
		protected function VerifyEmail()
		{
			$pattern = "^([a-zA-Z0-9])+([a-zA-Z0-9]+[-_\.]?)*([a-zA-Z0-9])+(@)([a-zA-Z0-9])+([a-zA-Z0-9]+[-_\.]?)*([a-zA-Z0-9])+(\.[a-z]{2,4})$";
 
			if(ereg($pattern,$_POST['email']))
			{
				return TRUE;
			}
			else
			{
				return FALSE;
			}
		}
 
		public function ErrorResult($num)
		{
			header("Location: form.php?alert=" . $num);
			die;
		}
 
		protected function ErrorReport()
		{
			if($this->IsEmptyField())
			{
				$this->ErrorResult(1);
			}
 
			/*if(!$this->VerifyPassword())
			{
				$this->ErrorResult(2);
			}*/
 
			if($this->nomeExists())
			{
				$this->ErrorResult(3);
			}
 
			if($this->emailExists())
			{
				$this->ErrorResult(4);
			}
			if(!$this->VerifyEmail())
			{
				$this->ErrorResult(5);
			}
 
			$this->InsertNewUser();
 
		}
	protected function GetKey() 
        { 
            $car = "aAbBcCdDeEfFgGhHiIlLjJkKmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789"; 
            $dim = 40; 
            srand((double)microtime()*1000000); 
			$string = ''; 
  
                for($inc=0; $inc<$dim; $inc++) 
                { 
                    $rand = rand(0, strlen($car)-1); 
                    $scar = substr($car, $rand, 1); 
                    $string = $string . $scar; 
                } 
  
            return 
			$string; 
        } 
 
		protected function SendUserMail ($key)
		{
			$content .= "Benvenuto $_POST[nome],\r\n";
			$content .= "Questi sono i tuoi dati di registrazione, \r\n\r\n" ;
			$content .="Nome: $_POST[nome]\r\nCognome: $_POST[cognome] \r\nCellulare: $_POST[cell]\r\nEmail: $_POST[email] \r\n\r\n";
			$content .= "per confermare la tua iscrizione devi cliccare sul seguente link:\r\n\r\n";
			$content .= "http://www.zxxxxxxx.it/registration/verify_user.php?key=" . $key;
			mail($_POST['email'], "Iscrizione al sito...", $content, "From: ZeeroStress<[email protected]>");
 
			return;
		}
 
		protected function InsertNewUser()
		{
			$password = md5($_POST['password']);
			$key_control = $this->GetKey(40);
 
			$sql = "INSERT INTO iscrizione (username,passowrd,data,luogo,sesso,documento,numdoc,
			provnascita,città,rovincia,cf,residenza,provres,cap,address,civico,fax,cell,tel,email,note, key_control) 
			VALUES 
			('$nome', '$cognome', '$data', '$luogo', '$sesso', '$documento', '$numdoc', '$provnascita', '$città','$provincia', '$cf', '$residenza',
'$provres', '$cap', '$address', '$civico', '$fax', '$cell', '$tel', '$email', '$note', '$key_control')";
 
			$this->DbConnect();
 
			mysql_query($sql,$this->conn);
 
			mysql_close($this->conn);
 
			$this->SendUserMail($key_control);
		}
 
		public function VerifyUser()
		{
			$sql = "SELECT id FROM iscrizione WHERE key_control='$_GET[key]'";
			$this->DbConnect();
			$res = mysql_query($sql,$this->conn);
 
			if($row = mysql_fetch_array($res))
			{
				$query = "UPDATE iscrizione SET ver=1,key_control='0' WHERE id='$row[id]'";
				mysql_query($query,$this->conn);
				mysql_close($this->conn);
				echo "Il tuo account ora è attivato!";
			}
			else
			{
				echo "Impossibile verificare l'account!";
			}
		}
I campi sul Db sono presenti tutti, idem nel form.php... da cosa dipende?
 

marino51

Utente Attivo
28 Feb 2013
3.001
173
63
Lombardia
continua ad esserci l'incoerenza
PHP:
    protected function GetKey()  
        {  
            $car = "aAbBcCdDeEfFgGhHiIlLjJkKmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789";  
            $dim = 40;  
            srand((double)microtime()*1000000);  


        protected function InsertNewUser() 
        { 
            $password = md5($_POST['password']); 
            $key_control = $this->GetKey(40);
 

Dylan VDj Canziani

Nuovo Utente
26 Mar 2015
11
0
0
continua ad esserci l'incoerenza
PHP:
    protected function GetKey()  
        {  
            $car = "aAbBcCdDeEfFgGhHiIlLjJkKmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789";  
            $dim = 40;  
            srand((double)microtime()*1000000);  


        protected function InsertNewUser() 
        { 
            $password = md5($_POST['password']); 
            $key_control = $this->GetKey(40);

Ciao marino, scusami ma come dicevo sono un ignorantone :) cosa intendi per incoerenza?
 

marino51

Utente Attivo
28 Feb 2013
3.001
173
63
Lombardia
la funzione GetKey() non prevede di ricevere nessun parametro quindi GetKey(40) è incongruo, a meno che, tu abbia fatto modifiche che non hai riportato nei tuoi post
 

otto9due

Utente Attivo
22 Feb 2014
529
21
28
Io ho usato lo stesso codice sul un sito fatto recentemente, diciamo che l'ho adattato alle mie esigenze, perchè a me serviva per una registrazione newsletter. Il codice funziona bene, almeno nel mio caso.. Hai creato le altre pagine che richiamano la classe come spiegato nella guida?
Il procedimento dovrebbe essere questo, lui crea questa stringa da 40 caratteri e la salva nel db con nome e cognome e un campo ver ( impostato di defoult a 0 ) e subito dopo manda la mail.. Quindi la corrispondenza dev'esserci sicuro..
Quando clicchi sul link in mail.. Si collega ad un'altra pag, ovvero verify_user.php e tramite il metodo VerifyUser() della classe da te postata verifica la corrispondenza tramite una ricerca nel db secondo quella stessa stringa da 40 caratteri se c'è imposta quella a 0 e ver ad 1..
Se hai la possibilità di entrare nel db vedi un pò se l'utente che ti crea problemi ha ancora ver a 0 e la stringa da 40 caratteri..
 

Dylan VDj Canziani

Nuovo Utente
26 Mar 2015
11
0
0
il db è vuoto. non è registrato nessun utente.. è quello che me stranisce. ho fatto tutto come nel tutorial. creato le pagine come descritto. la Mail di verifica arriva, ma, quando clicchi sul link di converma www.xxxxx.it/verify_user=1234567892222 mi da sempre " IMPOSSIBILE VERIFICARE L ACCOUNT"
 
Ultima modifica:

otto9due

Utente Attivo
22 Feb 2014
529
21
28
Allora credo che il problema risieda sul db, nel senso che non riesce a salvare i dati..
Secondo me hai fatto qualche casotto qui..

PHP:
protected function InsertNewUser() 
        { 
            $password = md5($_POST['password']); 
            $key_control = $this->GetKey(40); 
  
            $sql = "INSERT INTO iscrizione (username,passowrd,data,luogo,sesso,documento,numdoc, 
            provnascita,città,rovincia,cf,residenza,provres,cap,address,civico,fax,cell,tel,email,note, key_control)  
            VALUES  
            ('$nome', '$cognome', '$data', '$luogo', '$sesso', '$documento', '$numdoc', '$provnascita', '$città','$provincia', '$cf', '$residenza', 
'$provres', '$cap', '$address', '$civico', '$fax', '$cell', '$tel', '$email', '$note', '$key_control')"; 
  
            $this->DbConnect(); 
  
            mysql_query($sql,$this->conn); 
  
            mysql_close($this->conn); 
  
            $this->SendUserMail($key_control); 
        }

Primo correggi "rovincia "

Controlla che quando hai creato la tabella nel db, non hai messo che tutti i valori siano obbligatori. In questo caso se anche solo un valore risulta obbligatorio sul db e non lo inserisci, il db non prende nulla..

Cmq fino a quando il db ti risulta vuoto non potà verificare alcun utente..
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
A [PHP] Controllo nome utente form di registrazione PHP 4
X__WELBO__X [css] form registrazione utente HTML e CSS 9
P [PHP] come criptare una password in un form di registrazione PHP 4
F form registrazione PHP 3
F Codic e php visibile su form registrazione utenti PHP 2
L errore mysql per form di registrazione PHP 3
L Form di registrazione e log in. PHP 2
S Problemi form registrazione newsletter PHP 0
C Form registrazione Bootstrap PHP 0
C Form di registrazione personalizzato PHP 2
F script php form registrazione PHP 13
F Controlli form per Registrazione utenti PHP 9
S Memorizzare nome file allegato da form registrazione PHP 1
C Form login e registrazione aruba Hosting 7
A form registrazione + php + alert javascript Javascript 6
emanuelevt form per registrazione Javascript 2
C Cancellazione-Annulla Registrazione Dati appena Inseriti nel Form dall' Utente PHP 13
L Form Registrazione PHP 56
P Aiuto form registrazione utenti PHP 5
I Creare un form di registrazione PHP 7
B Form di registrazione Classic ASP 0
W Form di registrazione HTML e CSS 5
M problema form registrazione Classic ASP 1
L inserimento form dati multipli ? PHP 0
L Problemi form Pagina php HTML e CSS 2
Cosina Creare bottone delete in form upload PHP 4
Cosina Creare bottone delete in form upload PHP 1
D Devo far funzionare un form di contatti PHP 4
B form gestione input PHP 2
V PHP form intersecate PHP 0
8 Javascript - PDF Form Javascript 0
J Form inserimento dati in database Ajax 1
E Gestione profilo utente tramite Form PHP 3
R [C#] Form principale si blocca mentre un altro Thread lavora .NET Framework 0
M Problema con controllo form in real time jQuery 6
D Form validazione Javascript 2
R form recovery pass PHP 0
V Symfony e i form PHP 3
M form con checkbox PHP 8
S come aggiustare un form di contatto? HTML e CSS 3
F query e form con select multipla PHP 17
AC1 Form in finestra modale PHP 1
MarcoGrazia Verifica di una stringa o di un nome proveniente da form Snippet PHP 0
A Inserimento dati nel database tramite form + altre operazioni PHP 18
websilvia Contact form using Bootstrap 3.3.4 PHP 8
Alex_70 Button non funziona nella form PHP 2
C Form email php su pagina index.html? PHP 21
W Rinominare Documenti Con Form Asp Classic ASP 9
S Invio email da form PHP 8
L form multipla php sql,errore in inserimento MySQL 0

Discussioni simili