Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Rozwiązanie problemu w klasie
Matado
post
Post #1





Grupa: Zarejestrowani
Postów: 67
Pomógł: 0
Dołączył: 9.12.2008

Ostrzeżenie: (0%)
-----


Piszę dla siebie klasę do logowania. Jak widać, jest w niej wylogowywanie, logowanie, ale sprawdzanie hasła takiego prawdziwego jeszcze nie ma.
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?

  1. <?php
  2.  
  3.  
  4. class Auth
  5. {
  6.    private $name;
  7.    private $password;
  8.    public $messages;
  9.  
  10.    public function get()
  11.    {
  12.        $pdo= new PDO ('mysql:host=localhost;dbname=trial','root','');
  13.        $stmt= $pdo-> prepare ('SELECT name,password FROM experiment WHERE name=:name ');
  14.        $stmt-> bindValue (':name', $_POST['username'] , PDO::PARAM_STR);
  15.        $stmt-> execute();
  16.      
  17.        while ($row= $stmt-> fetch())
  18.        {
  19.            $this-> name= $row['name'];
  20.            $this-> password= $row['password'];
  21.        }
  22.        $stmt-> closeCursor();
  23.    }
  24.    
  25.    public function login($login, $pass)
  26.    {
  27.        if (! empty($login) && ! empty($pass))
  28.        {
  29.            if ($this-> name== $login && $this-> password== $pass)
  30.            {
  31.                $_SESSION['user']= $this-> name;
  32.                $this-> messages= 'Welcome: ' . $_SESSION['user']
  33.                . ' <a href="execute.php?logout=true">Signout</a>';
  34.            }
  35.            else
  36.            {
  37.                $this-> messages= 'Invalid username or password';
  38.            }
  39.        }
  40.        else
  41.        {
  42.            $this-> messages= 'Fill in all fields';
  43.        }
  44.    }
  45.    
  46.    public function signout()
  47.    {
  48.        if ($_GET['logout'])
  49.        {
  50.            unset ($_SESSION['user']);
  51.            session_destroy();
  52.            session_regenerate_id;
  53.            header ("Location: form.php");
  54.        }
  55.    }
  56.    
  57.    public function show()
  58.    {
  59.        return $this-> messages;
  60.    }
  61. }
  62.  
  63. ?>
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.08.2025 - 12:34