Witam,
Mam dla Was do sprawdzenia początek rejestracji. Nie ma tu jeszcze zapisu do bazy danych, ale mam gotową walidację loginu i hasła. Został e-mail, ale to będzie analogicznie to loginu. Podaję kod:
<?php
function connect() {
try {
$host = "localhost";
$dbname = "sfwyf";
$user = "root";
$pass = "vertrigo";
$dbh = new PDO("mysql:host=$host; dbname=$dbname", $user, $pass);
echo "Połączenie nawiązane"; return $dbh;
} catch
( PDOException
$error) { die("Failed to connect:" . $error->getMessage()); }
}
function is_availble_login($dbh, $desired_login) // ta funkcja, bo jeszce będę wykorzystywał przy sprawdzaniu ajaxowym, to samo będzie dla meila
{
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM users WHERE username =:username)";
$q = $dbh->prepare($sql);
try
{ $count_row = $q->execute(array(':username'=>$desired_login));}
catch
(PDOException
$e) { print_r( "checking.... ".$e->getTrace() );} if ($count_row->fetchColumn() > 0) {
return false;
else return true;
}
}
class r_User{
public $id;
public $pass;
public $pass2;
public $name;
public $username;
public $email;
public $permission_level;
public $validate = true;
public $registration_error = array(); public $registration_error_id = array(); function valid_form{
if(this->$pass==$this->pass2){
$this->pass = trim($this->pass); if( !preg_match('^(?:[0-9a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ!@#$%^&*()_-=+[]{}|.]{5,15})$', $this->pass) {
array_push($registration_error, "Podane hasło nie jest poprawne. Musi posiadać od 5 do 15 znaków. Hasło może zawierać następujące znaki: cyfry; litery; oraz następujące znaki: !@#$%^&*()_-=+[]{}|.") array_push($regisration_error_id, 0) // żebym wiedział, które pole na czerwono} $validate = false;
}
}
else {array_push($registration_error, "Podane hasła nie zgadzają się"); array_push($regisration_error_id, 0) // żebym wiedział, które pole na czerwono} $validate = false;
}
//teraz login
$this->username = trim($this->username); if( !preg_match('^(?:[0-9a-zA-ZąćęłńóśźżĄĆĘŁŃÓŚŹŻ._-!@#$&]{5,15})$', $this->username) {
array_push($registration_error, "Podany login jest niepoprawnyasło nie jest poprawne. Musi posiadać od 5 do 15 znaków. Hasło może zawierać następujące znaki: cyfry; litery; oraz następujące znaki: ._-!@#$&") array_push($regisration_error_id, 1) // żebym wiedział, które pole na czerwono} $validate = false;
}
else{
if(is_availble_login($dbh, $this->username))
{
//wpisuje do bazy
}
else{
array_push($registration_error, "Ten login jest już zajęty"); array_push($regisration_error_id, 1) // żebym wiedział, które pole na czerwono} $validate = false;
}
}
}
else {array_push($registration_error, "Podane hasła nie zgadzają się"); array_push($regisration_error_id, 0) // żebym wiedział, które pole na czerwono} $validate = false;
}
}
}
?>
Możliwe, że gdzieś "ify" mogą zachodzić na siebie, ale to poprawię. Chodzi o koncepcje walidacji, jak ją poprawić/uoptymalnić?
Ten post edytował tukan 14.07.2012, 22:52:05