Czy mógłby ktoś ocenić czy w kodzie nie ma błędu, jest to walidacja formularza rejestracyjnego.
<?php
interface ABC{
public function validateLogin();
public function validatePassword();
public function validatePasswordRepeat();
public function validateName();
public function validateUsername();
public function validatePhone();
public function validateEmail();
public function validateDate();
public function Insert();
}
class UserValidation extends database implements ABC{
private $data;
private $errors = '';
private static $fields = ['login', 'password', 'password_repeat', 'first_name', 'last_name', 'email', 'number_phone', 'birth_date', 'gender', 'avatar' ];
public function __construct($fields)
{
$this->data = $fields;
}
public function validateLogin()
{
$val = $this->data['login'];
if(empty($val)){
return $this->errors = "Podaj login";
}
else if(!preg_match('/^[a-zA-Z-0-9]{4,12}$/', $val)){
return $this->errors = "login musi mieć od 4 do 12 znaków";
}else
{
$sql = $this->connect()->prepare("SELECT * FROM users where login = :login");
$sql->bindParam(':login', $val, PDO::PARAM_STR);
$sql->execute();
if($sql->rowCount()){
return $this->errors = "Podany login już istnieje";
}
}
}
public function validatePassword()
{
$val = trim($this->data['password']);
if(empty($val))
{
return $this->errors = 'Podaj hasło';
}
else if(!empty($val) && !preg_match('/^[A-Za-z][A-Za-z0-9]{5,31}$/', $val))
{
return $this->errors = 'Hasło musi zawierać przynajmniej 6 znaków i zaczynać się od litery';
}
}
public function validatePasswordRepeat()
{
$val = trim($this->data['password_repeat']);
$vala = trim($this->data['password']);
if(empty($val))
{
return $this->errors = 'Pole nie może być puste';
}
else if($val!=$vala)
{
return $this->errors = 'Hasła nie są identyczne';
}
}
public function validateName()
{
$val = trim($this->data['first_name']);
if(empty($val))
{
return $this->errors = "Podaj imię";
}
else if(!preg_match('/^[a-zA-Z-0-9]{3,12}$/', $val))
{
return $this->errors = "Niepoprawne imię";
}
}
public function validateUsername()
{
$val = trim($this->data['last_name']);
if(empty($val))
{
return $this->errors = "Podaj nazwisko";
}
else if(!preg_match('/^[a-zA-Z-0-9]{3,12}$/', $val))
{
return $this->errors = "Niepoprawne nazwisko";
}
}
public function validatePhone()
{
$val = trim($this->data['number_phone']);
if(empty($val))
{
return $this->errors = "Podaj numer telefonu";
}else if(!preg_match('/^[0-9]{9}+$/', $val))
{
return $this->errors = "Niepoprawny numer";
}else
{
$sql = $this->connect()->prepare("SELECT * FROM users where number_phone = :number_phone");
$sql->bindParam(':number_phone', $val, PDO::PARAM_INT);
$sql->execute();
if($sql->rowCount()){
return $this->errors = "Podany numer już istnieje";
}
}
}
public function validateEmail()
{
$val = filter_var($this->data['email'], FILTER_SANITIZE_EMAIL);
if(empty($val))
{
return $this->errors = "Podaj email";
}else if(!filter_var($val, FILTER_VALIDATE_EMAIL))
{
return $this->errors = "Niepoprawny email";
}else
{
$sql = $this->connect()->prepare("SELECT * FROM users where email = :email");
$sql->bindParam(':email', $val, PDO::PARAM_STR);
$sql->execute();
if($sql->rowCount()){
return $this->errors = "Podany email już istnieje";
}
}
}
public function validateDate()
{
$val = trim($this->data['birth_date']);
if(empty($val))
{
return $this->errors = "Wybierz datę urodzenia";
}else
echo $this->data['birth_date'];
}
public function validateGender()
{
$val = trim($this->data['gender']);
if(empty($val))
{
return $this->errors = "Wybierz płeć";
}
}
public function validateImage()
{
$val = trim($this->data['avatar']);
if(empty($val)){
return $this->errors = "Wybierz awatar";
}
}
public function Insert()
{
$field1 = $this->data['login'];
$field2 = $this->data['password'];
$field3 = $this->data['first_name'];
$field4 = $this->data['last_name'];
$field5 = $this->data['email'];
$field6 = $this->data ['birth_date'];
$field20 = date("Y-m-d");
$field100 = date('H:i:s');
$field30 = strtotime($field6);
$field40 = strtotime($field20);
$age = $field40-$field30;
$age10 = $age/(60*60*24*365);
$field7 = $this->data['gender'];
$field8 = $this->data['number_phone'];
$field9 = $this->data['gender'];
$field10 = $this->data['avatar'];
$hash = password_hash($field2, PASSWORD_DEFAULT);
if(empty($this->errors))
{
$sql = $this->connect()->prepare("INSERT INTO users(`login`, `password`, `first_name`, `last_name`, `email`, `birth_date`, `age`, `number_phone`, `gender`, `avatar`) VALUES(:login, :password, :first_name, :last_name, :email, :birth_date, :age, :number_phone, :gender, :avatar)");
$sql->bindParam(':login', $field1, PDO::PARAM_STR);
$sql->bindParam(':password', $hash, PDO::PARAM_STR);
$sql->bindParam(':first_name', $field3, PDO::PARAM_STR);
$sql->bindParam(':last_name', $field4, PDO::PARAM_STR);
$sql->bindParam(':email', $field5, PDO::PARAM_STR);
$sql->bindParam(':birth_date', $field6, PDO::PARAM_STR);
$sql->bindParam(':gender', $field7, PDO::PARAM_STR);
$sql->bindParam(':age', $age10, PDO::PARAM_INT);
$sql->bindParam(':number_phone', $field8, PDO::PARAM_INT);
$sql->bindParam(':avatar', $field10, PDO::PARAM_STR);
$sql->execute();
$query = $this->connect()->prepare("INSERT INTO statystics(`date_registration`, `time_registration`) VALUES(:date_registration, :time_registration)");
$query->bindParam(':date_registration', $field20, PDO::PARAM_STR);
$query->bindParam(':time_registration', $field100, PDO::PARAM_STR);
$query->execute();
}else
echo "BLAD zapytania";
}
}
?>