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.039
192
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.039
192
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
M Form: come tornare ai campi già compilati dopo invio PHP 1
G Invio form con PHP PHP 3
felino Form action costum e parametri in queryString WordPress 1
M Come recuperare molteplici input form PHP 1
M Collegamento tra form html e script php PHP 4
L form immagini per il database PHP 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
L inserimento form dati multipli ? PHP 0
L Problemi form Pagina php HTML e CSS 3
Cosina Creare bottone delete in form upload PHP 5
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

Discussioni simili