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;
I campi sul Db sono presenti tutti, idem nel form.php... da cosa dipende?
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!";
}
}