Ciao ragazzi, buongiorno.
Stavolta mi sa che ho bisogno di un genio...
Io ci sto provando da stamattina alle 8... seguo la logica, ma non va...![]()
Sono partito da questo tutorial per creare un mio codice perchè quello del tutorial genera degli alert in caso di errore, e poi una volta trovato il primo errore non caga gli altri.
Io invece vorrei semplicemente che una volta eseguita la verifica tornasse alla pagina form e nell'URL comparissero gli errori in GET (si dice così?)... erempio:
sito.da/?page=reg&errnome=1&errcognome... ecc
In questo modo potrei creare delle condizioni in modo da aggiungere o togliere delle classi in css (per far diventare il bordino rosso sul campo errato ad esempio), e aggiungere del testo se errnome=1 (ad esempio)
Posto il codice:
Ma non riesco a capire dov'è l'errore...Codice 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);
}
// controllo su NOME
protected function NomeCheck()
{
if(empty($_POST['nome']))
{
return TRUE;
}
else
{
return FALSE;
}
}
// controllo su COGNOME
protected function CognomeCheck()
{
if(empty($_POST['cognome']))
{
return TRUE;
}
else
{
return FALSE;
}
}
// controllo esistenza USERNAME
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;
}
}
// controllo USERNAME
protected function UsernameCheck()
{
if($_POST[username] == "")
{
return TRUE;
}
elseif(ereg("^[a-z0-9]{6,12}$",$_POST[username]))
{
if($this->UsernameExists())
{
return TRUE;
}
else{
return FALSE;
}
}
else{
return TRUE;
}
}
// controllo uguaglianza PASSWORD
protected function VerifyPassword()
{
if($_POST['password'] == $_POST['password2'])
{
return TRUE;
}
else
{
return FALSE;
}
}
// controllo PASSWORD
protected function PasswordCheck()
{
if($_POST[password] == "")
{
return TRUE;
}
elseif(ereg("^[a-zA-Z0-9]{6,12}$",$_POST[password]))
{
if(!$this->VerifyPassword())
{
return TRUE;
}
else{
return FALSE;
}
}
else{
return TRUE;
}
}
// controllo esistenza EMAIL
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;
}
}
// controllo EMAIL
protected function EmailCheck()
{
if($_POST[email] == "")
{
return TRUE;
}
elseif(ereg("^[a-zA-Z0-9][_\.a-zA-Z0-9-]+@([a-zA-Z0-9][0-9A-Za-z-]+\.)+([A-Za-z]{2,4})",$_POST[email]))
{
if($this->EmailExists())
{
return TRUE;
}
else{
return FALSE;
}
}
else{
return TRUE;
}
}
public function ErrorResult()
{
if(NomeCheck())
{
$errnome="&errnome=1";
}
if(CognomeCheck())
{
$errcognome="&errcognome=1";
}
if(UsernameCheck())
{
$errusername="&errusername=1";
}
if(PasswordCheck())
{
$errpassword="&errpassword=1";
}
if(EmailCheck())
{
$erremail="&erremail=1";
}
header("Location: ../?page=reg" . $errnome . $errcognome . $errusername . $errpassword . $erremail);
die;
}
protected function ErrorReport()
{
if($this->NomeCheck() OR $this->CognomeCheck() OR $this->UsernameCheck() OR $this->PasswordCheck() OR $this->EmailCheck())
{
$this->ErrorResult;
}
$this->InsertNewUser();
}
//genera stringa casuale da inviare per email per confermare l'account
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;
}
// prepara l'email con il link per confermare l'account (!!!!!!!!!!!!! ATTENZIONE: MODIFICA L'URL)
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://www.pixter.it/starfactory/reg/verify_user.php?key=" . $key;
mail($_POST['email'], "Iscrizione al sito...", $content, "From: io<miomail@me.com>");
return;
}
// cripta la password, inserisce i dati nel database (con account ancora da attivare), prepara il link per conferma e invia la mail
protected function InsertNewUser()
{
$password = md5($_POST['password']);
$key_control = $this->GetKey();
$sql = "INSERT INTO users (nome,cognome,username,password,email,key_control) VALUES ('$_POST[nome]','$_POST[cognome]','$_POST[username]','$password','$_POST[email]','$key_control')";
$this->DbConnect();
mysql_query($sql,$this->conn);
mysql_close($this->conn);
$this->SendUserMail($key_control);
}
// attivazione dell'account da link. Se il link è corretto passa ver a 1 e cancella key_control (la chiave casuale)
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!";
}
}
}
?>
Alla fine dello script l'utente me lo registra comunque, anche se i campi sono tutti vuoti!
E' come se la funzione ErrorReport() non me la filasse proprio..
Dove sbaglio?
Grazie per l'aiuto!![]()

Rispondi quotando
