Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Formularz logowania OOP + PDO + Smarty
_chris_
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 19.08.2011

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


Witam wszystkich

Jako że się uczę całe życie i staram rozwijać, teraz stanąłem przed kolejnym zadaniem. Chciałem zrobić sobie prosty formularz logowania (bez rejestracji itd) wykorzystując OOP i PDO do połączenia z bazą danych. Nie bardzo mogę sobie poradzić z organizacją kodu. Stworzyłem sobie klasę:

  1. class Uzytkownik{
  2. var imie;
  3.  
  4. public function __construct($_imie){
  5. $this->imie = $_imie;
  6. }
  7.  
  8. }


Mam też klasę DB zaimplementowaną jako Singleton
  1. class DB{
  2. private username = "xxx";
  3. private password = "xxx";
  4. private host = "xxx";
  5. private dbName = "xxx";
  6.  
  7. public function __contruct(){
  8. $this->db = new PDO('mysql:host='.$host.';dbname='.$dbName, self::$username, self::$password);
  9. $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  10. }
  11.  
  12. public static function getInstance(){
  13. if(!isset(self::$instance)){
  14. $object = __CLASS__;
  15. self::$instance = new $object;
  16.  
  17. }
  18. return self::$instance;
  19. }
  20. }


No i właśnie tutaj zaczynają się schody. Chciałbym mieć metodę do logowania. Czy ta metodę powinienem umieścić w klasie Użytkownika czy DB ? Jeśli w użytkowniku, to czy przypisywać zawsze użytkowniki instancję DB? Prosiłbym o pomoc, generalnie to opis tego jak Wy to robicie w swoich aplikacjach. Wiem że jak teraz źle coś zrobię, to potem poprawki będą ciężkie.

Generalnie najbardziej chodzi mi o rozwiązanie tego gdzie, co i w czym ma być w tych klasach żeby potem utworzenie formularza logowania zajęło raptem parę linijek, np
Index.php
  1. if(isset($_SESSION['uzytkownik']) $smarty->display('index.tpl');
  2. else header('location: login.php')

Login.php
  1. if(isset($_POST['submit']) if(zaloguj($_POST['login'], $_POST['password'])) header("location: index.php");
  2. else $smarty->display('login_form.tpl');


Z góry dziękuję za porady
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: 24.08.2025 - 11:31