ucze sie oop, ale najlepiej sie chyba zawsze uczy na przykldach wiec postanowilem napisac w oop system autoryzacji, zapewne jest tu masa bledow i niedocogniec, wiec prosze bardziej zaawanwoanych uzytkownikow o wskazowki co poprawic:
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<?php
class DB
{
protected function connectdb ()
{
try
{
$pdo = new PDO('mysql:host=localhost;dbname=michat34', 'michat34', 'mud305000');
}
catch(PDOException $e)
{
die('Nie udało się połączyć z bazą danych. Spróbuj ponownie później: '.$e->getMessage()); }
}
}
class User extends DB
{
private $login;
private $password;
private $email;
public function __construct ($login,$password,$email)
{
$this->connectdb();
$this->login = $login;
$this->password = $password;
$this->email = $email;
} // end __construct();
static public function filtr
($item) {
} // end filtr();
public function getValue ($value)
{
return $this->$value;
} // end getValue();
public function check_login ()
{
if (!preg_match('/^[A-Za-z0-9]{3,20}$/',$this->login)) return false; return true;
} // end check_login();
public function check_login2 ()
{
echo "LOGINL $this->login"; $stmt=$pdo->query("SELECT id FROM users WHERE login='$this->login'");
$res=$stmt->rowCount();
$stmt->closeCursor();
if ($res > 0) return false;
return true;
} // end check_login2();
public function check_password ()
{
if (((strlen($this->password)) < 6
) || ((strlen($this->password)) > 40
)) return false; return true;
} // end check_password();
public function check_email ()
{
if (!preg_match('/^[A-Za-z0-9\.\-\_]+\@[a-z0-9]+\.[a-z]+$/',$this->email)) return false; return true;
} // end check_email();
public function check_email2 ()
{
$stmt=$pdo->query("SELECT id FROM users WHERE email='$this->email'");
$res=$stmt->rowCount();
$stmt->closeCursor();
if ($res > 0) return false;
return true;
} // end check_email2();
}
// po kliknieciu przycisku rejestracji
if (isset($_POST['reg'])) {
$login = $_POST['login'];
$password = $_POST['password'];
$email = $_POST['email'];
$login = User::filtr($login);
$password = User::filtr($password);
$email = User::filtr($email);
$user = new User($login,$password,$email);
if (($user->check_login()) && ($user->check_login2()) && ($user->check_password()) && ($user->check_email()) && ($user->check_email2()))
{
$stmt=$pdo->prepare('INSERT INTO users (login,password,email,ip) VALUES (:login,:password,:email,:ip)');
$stmt->bindValue(':login',$user->getValue($login),PDO::PARAM_STR);
$stmt->bindValue(':password',$user->getValue($password),PDO::PARAM_STR);
$stmt->bindValue(':email',$user->getValue($email),PDO::PARAM_STR);
$stmt->bindValue(':ip',$_SERVER['REMOTE_ADDR'],PDO::PARAM_STR);
$num=$stmt->execute();
} else
{
echo '<p>Nieprawidlowe dane:</p>'; if (($user->check_login()) == false) echo '<li>Zły login</li>'; if (($user->check_login2()) == false) echo '<li>Zajęty login</li>'; if (($user->check_password()) == false) echo '<li>Złe hasło</li>'; if (($user->check_email()) == false) echo '<li>Zły e-mail</li>'; if (($user->check_emai2()) == false) echo '<li>Zajęty e-mail</li>'; }
}
?>
<form action="index.php" method="post">
<table>
<tr><td>Login:</td><td><input type="text" name="login" id="login"></td></tr>
<tr><td>Hasło:</td><td><input type="password" name="password" id="password"></td></tr>
<tr><td>E-mail:</td><td><input type="text" name="email" id="email"></td></tr>
</table>
<input type="submit" name="reg" value="Rejestracja">
</form>