Zrobię to w najbliższym czasie, razem z soleniem hasła + sha1. Ale mniejsza o to.
Mam małe pytanie jeśli chodzi o metodę get(). Wydaje mi się że trochę brzydko wygląda łączenie się z bazą danych w jednej klasie odpowiadającej za logowanie. Jak skonstruowalibyście tą metodę get(), żeby pobierała dane, ale bez łączenia się z bazą?
Czy dobrym pomysłem jest tu zrobienie osobnej klasy, która łączy się z bazą i pobiera dane, dalej include do pliku z klasą itd?
<?php class Auth { private $name; private $password; public $messages; public function get() { $pdo= new PDO ('mysql:host=localhost;dbname=trial','root',''); $stmt= $pdo-> prepare ('SELECT name,password FROM experiment WHERE name=:name '); $stmt-> bindValue (':name', $_POST['username'] , PDO::PARAM_STR); $stmt-> execute(); while ($row= $stmt-> fetch()) { $this-> name= $row['name']; $this-> password= $row['password']; } $stmt-> closeCursor(); } public function login($login, $pass) { { if ($this-> name== $login && $this-> password== $pass) { $_SESSION['user']= $this-> name; $this-> messages= 'Welcome: ' . $_SESSION['user'] . ' <a href="execute.php?logout=true">Signout</a>'; } else { $this-> messages= 'Invalid username or password'; } } else { $this-> messages= 'Fill in all fields'; } } public function signout() { if ($_GET['logout']) { } } public function show() { return $this-> messages; } } ?>