Registrazione con conferma email.

Salvo Salvi

Utente Attivo
14 Nov 2012
230
0
0
Ciao a tutti inanzitutto vi volevo fare i complimenti per l'ottimo forum e per le risposte sempre rapide, a differenza di molti vostri forum "rivale".
Vi espongo subito il mio problema allora io ho trovato degli script gia pronti per la registrazione con email di conferma e li ho copiati nel mio sito. Il processo funziona benissimo fino a quando non vado a attivare l'account tramite email.Mi spiego meglio mi arriva l'email con il link di conferma ci clicco ma mi stampa un messagio di errore.
Vi le 2 pagine di script che a mio conto sono colpevoli:
La prima:
PHP:
<?php
 
class NewUser
{
	public $conn;
 
		public function AddUser()
		{
			$this->ErrorReport();
		}
 
		protected function DbConnect()
		{
			include "db_config.php";
 
			$this->conn = mysql_connect($host,$user,$password) OR die("Impossibile connettersi al database");
			mysql_select_db($db, $this->conn);
		}
 
		protected function IsEmptyField()
		{
			if(empty($_POST['username']) OR empty($_POST['email']) OR empty($_POST['password']))
			{
				return TRUE;
			}
			else
			{
				return FALSE;
			}
		}
 
		protected function VerifyPassword()
		{
			if($_POST['password'] == $_POST['password2'])
			{
				return TRUE;
			}
			else
			{
				return FALSE;
			}
		}
 
		protected function UsernameExists()
		{
			$this->DbConnect();
			$sql = "SELECT username FROM users WHERE username='$_POST[username]'";
			$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 * FROM users 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->UsernameExists())
			{
				$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[username],\r\n";
			$content .= "per confermare la tua iscrizione devi cliccare sul seguente link:\r\n\r\n";
			$content .= "http://laemmeallapi.altervista.org/ProvasitoNontoccare/Script/verify_user.php?key=" . $key;
 
			mail($_POST['email'], "Iscrizione al sito...", $content, "From: io<[email protected]>");
 
			return;
		}
 
		protected function InsertNewUser()
		{
			$password = md5($_POST['password']);
			$key_control = $this->GetKey();
 
			$sql = "INSERT INTO users (username,email,password,key_control) VALUES ('$_POST[username]','$_POST[email]','$password','$key_control')";
 
			$this->DbConnect();
 
			mysql_query($sql,$this->conn);
 
			mysql_close($this->conn);
 
			$this->SendUserMail($key_control);
		}
 
		public function VerifyUser()
		{
			$sql = "SELECT id FROM users WHERE key_control='$_GET[key]'";
			$this->DbConnect();
			$res = mysql_query($sql,$this->conn);
 
			if($row = mysql_fetch_array($res))
			{
				$query = "UPDATE users 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!";
			}
		}
}
 
?>

e la secondo ma credo che non sia lei la colpevole dell errore:

PHP:
<?php
 
require_once 'newuser.class.php';
 
$newuser = new NewUser();
$newuser->VerifyUser();
 
?>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
potresti modificare il metodo VerifyEmail() usando filter_var() al posto di ereg()
PHP:
protected function VerifyEmail() {

        if (filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
            return true;
        }
        return false;
    }
 

marino51

Utente Attivo
28 Feb 2013
3.036
192
63
Lombardia
bisognerebbe vedere il codice che utilizza la classe NewUser per inviare la mail
in ogni caso chi fa tutto è il seguente codice
PHP:
        protected function InsertNewUser() 
        { 
            $password = md5($_POST['password']); 
            $key_control = $this->GetKey(); 
  
            $sql = "INSERT INTO users (username,email,password,key_control) VALUES ('$_POST[username]','$_POST[email]','$password','$key_control')"; 
  
            $this->DbConnect(); 
  
            mysql_query($sql,$this->conn); 
  
            mysql_close($this->conn); 
  
            $this->SendUserMail($key_control); 
        }
prova ad inserire dei "var_dump" per verificare che "$key_control" sia generato correttamente
ciao
Marino
 

Dylan VDj Canziani

Nuovo Utente
26 Mar 2015
11
0
0
bisognerebbe vedere il codice che utilizza la classe NewUser per inviare la mail
in ogni caso chi fa tutto è il seguente codice
PHP:
        protected function InsertNewUser() 
        { 
            $password = md5($_POST['password']); 
            $key_control = $this->GetKey(); 
  
            $sql = "INSERT INTO users (username,email,password,key_control) VALUES ('$_POST[username]','$_POST[email]','$password','$key_control')"; 
  
            $this->DbConnect(); 
  
            mysql_query($sql,$this->conn); 
  
            mysql_close($this->conn); 
  
            $this->SendUserMail($key_control); 
        }
prova ad inserire dei "var_dump" per verificare che "$key_control" sia generato correttamente
ciao
Marino

ho trovato l'errore,,,, avevo tranciato un pezzo di codice io... mancava
PHP:
$key_control = $this->GetKey(40);
 

marino51

Utente Attivo
28 Feb 2013
3.036
192
63
Lombardia
ho trovato l'errore,,,, avevo tranciato un pezzo di codice io... mancava
PHP:
$key_control = $this->GetKey(40);

avevi modificato altro perché il codice che hai postato non prevedeva nessun parametro nella generazione della chiave
PHP:
protected function GetKey() { 
            $car = "aAbBcCdDeEfFgGhHiIlLjJkKmMnNoOpPqQrRsStTuUvVwWxXyYzZ0123456789"; 
            $dim = 40;
 
Discussioni simili
Autore Titolo Forum Risposte Data
D Form Registrazione con conferma via email - problema PHP 10
Y Conferma registrazione (era: link con ?codice=codice) PHP 3
A [PHP] registrazione utente in un database sql con confronto PHP 1
marino51 problema con registrazione al forum Supporto Mr.Webmaster 4
P Problema con file di registrazione in php, non funziona e dà continui errori PHP 0
M pagina registrazione con mail contenente link di attivazione profilo PHP 1
M Problema con modulo registrazione e inserimento dati in database PHP 8
M Creazione sito con autenticazione utente (registrazione) PHP 3
I Registrazione con Ajax Ajax 1
I Parte di una registrazione con ajax Javascript 1
G Inserimento array proveniente da un modulo di registrazione con PHP e MySQL PHP 6
S Plugin login/ registrazione Wordpress con area download privata WordPress 3
asevenx login con registrazione e cookie che salva i dati con sistema "ricordami" PHP 3
L Problemi con software di registrazione video Windows e Software 2
T Problema con script di registrazione utenti su IE PHP 4
E problema con nomi registrazione PHP 8
neo996sps Problema con tutorial registrazione utenti PHP 1
M Registrazione dati con .htaccess? Apache 10
D problema con registrazione utenti PHP 6
M Registrazione con password di tipo Random PHP 4
P Chat con registrazione Supporto Mr.Webmaster 3
N Problemi con registrazione numero accessi. PHP 0
W Problema Registrazione Punteggio con giochi PHP 0
D script news con dati registrazione anche in posta PHP 0
icebracker registrazione con dreamweaver!!!! HTML e CSS 1
E modulo di registrazione con psw Javascript 2
R Plugin per Registrazione Utente e Pagamento prodotto WordPress 2
T Modificare ruolo utenti in fase di registrazione E-Commerce 0
G Registrazione utente su pagina asp Classic ASP 13
F [PHP]Errore registrazione PHP 8
R Obbligare all'utente un pagamento al momento della registrazione PHP 3
E Problemi in registrazione telecamere Dahua IP Cam e Videosorveglianza 6
A [PHP] Controllo nome utente form di registrazione PHP 4
Tommy03 Generare file PHP dopo registrazione PHP 2
G [PHP] Revisione codice per registrazione PHP 8
B Data Registrazione Dominio Domini 1
B [PHP] Mail di Avvenuta registrazione PHP 4
S registrazione video su dvr in caso di rilevamento di movimento IP Cam e Videosorveglianza 12
Laskot [Javascript] Registrazione e salvataggio utenti in LocalStorage Javascript 8
V Domande: registrazione sito fonti esterne SEO e Posizionamento 0
M registrazione in relazione ai commenti Programmazione 0
damiano.f [PHP] variabili su immagine e registrazione dati su db PHP 0
X__WELBO__X [css] form registrazione utente HTML e CSS 9
L [PHP] Registrazione/Logina la psw deve contenere.. PHP 3
G [WordPress] Redirect dopo registrazione WordPress 0
ANDREA20 [PHP] problema registrazione PHP 50
P [PHP] come criptare una password in un form di registrazione PHP 4
S Vecchio articolo registrazione utenti, errore MySQL PHP 2
M Sito "e-commerce", stampare dati di registrazione e dati dell'acquisto da pagine diverse PHP 7
S appinventor, aggiungere tasto registrazione Sviluppo app per Android 1

Discussioni simili