Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [OOP][SMARTY] Logowanie
Forum PHP.pl > Forum > PHP
wembleyos
Witam, dręczy mnie pewien problem...nie potrafię logicznie wpaść na to, jak powinienem połączyć smarty z logowaniem w klasach. Napisałem na razie orientacyjnie proste sprawdzanie użytkownika (logowanie) Mam wszystko w osobnych plikach:

Klasa użytkownika znajduje się w classes/class.user.php
  1. <?
  2. class User {
  3. var $Login;
  4. var $Haslo;
  5. var $Zalogowany;
  6. var $DataTeraz;
  7. var $PodajLogin;
  8. var $PoprawDane;
  9.  
  10. public function __construct() {
  11. $this->Login=$_POST['login'];
  12. $this->Haslo=md5(md5($_POST['password']));
  13. $this->Zalogowany=$_SESSION['login'];
  14. $this->DataTeraz=date("d.m.Y, H:i:s");
  15. $this->PodajLogin="<b>Wystąpił błąd</b>: podaj login oraz hasło.";
  16. $this->PoprawDane="<b>Wystąpił błąd</b>: podane dane nie są poprawne.";
  17. }
  18.  
  19.  
  20.  
  21.  
  22. public function Autoryzacja($user, $haslo){
  23. $dane=mysql_fetch_assoc("SELECT * FROM `users` WHERE `login` = '".$this->Login."'");
  24.  
  25. if(isset($Login) && isset($Haslo)){
  26. if($dane['Login'] == $this->Login && $dane['Haslo'] == $this->Haslo){
  27.  
  28. /* ustawia zmienną sesyjną*/ $this->Zalogowany="".$dane['users_id']."";
  29. /* ustawia ciasteczko */ setcookie ("log" , "log", time()+3600, "/","", 0);
  30. /* OSTATNIA AKTYWNOŚĆ */ Wykonaj("UPDATE `users` SET `lastactive` = '".$this->DataTeraz."' WHERE `users_id` = '".$this->Zalogowany."'");
  31. /* przenosi na stronę główną */ header( "Location: index.php");
  32.  
  33. } else {
  34. $this->PoprawDane;);
  35. }
  36. } else {
  37. print $this->PodajLogin;
  38. }
  39.  
  40. }
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47. }
  48.  
  49. ?>


Plik główny:
  1. <?
  2.  
  3. /* DOŁĄCZANIE WSZYSTKICH NIEZBĘDNYCH PLIKÓW */
  4. require("var/inc.default.php");
  5. require("var/config.php");
  6.  
  7. /* PRZYŁĄCZANIE KLAS */
  8. require_once("classes/class.user.php");
  9.  
  10.  
  11. Polacz("".$db_host."", "".$db_user."", "".$db_password."", "".$db."");
  12.  
  13. ...
  14.  
  15.  
  16. /* ---------------------------------------------------*/
  17. /* sekcja dla smarty */
  18. $styl="default"; // nazwa katalogu danego stylu strony
  19. require('smarty/Smarty.class.php');
  20. $smarty = new Smarty;
  21.  
  22. // przypisywanie zmiennych dla styli
  23. $smarty -> assign('tytul', 'Nasz strona testowa');
  24. $smarty -> assign('tekst', 'Jakis tam tekst');
  25.  
  26. // WYŚWIETLANIE STRONY Z WYKORZYSTANIEM SZABLONÓW
  27.  
  28. $smarty -> display(''.$styl.'/profil.tpl'); // *** TABELA PROFILU UŻYTKONIKA ***
  29. $smarty -> display(''.$styl.'/notifications.tpl'); // *** TABELA POWIADOMIEŃ ***
  30. $smarty -> display(''.$styl.'/body.tpl'); // *** WYŚWIETLAJĄCA SIĘ ZAWARTOŚĆ STRONY ***
  31. $smarty -> display(''.$styl.'/footer.tpl'); // *** STOPKA ***
  32. /* */
  33. /* ---------------------------------------------------*/
  34. ?>


Jak zaimplementować do smarty obiekt logowania?
nospor
Smarty odpowiada za wizualizację. Skoro robiles logowanie bez smarty tylko na czystym php to masz to samo zrobic ze smarty. Smarty to tylko wygląd a nie logika aplikacji
Cytat
Jak zaimplementować do smarty obiekt logowania?

Znaczy co?
  1. $user = new User();
  2. $smarty -> assign('user', $user);

Tylko nie wiem na grzyba ci obiekt usera w smartim (w takiej postaci jak jest teraz)
wembleyos
Teraz to w sumie już sam się pogubiłem. Chodziło mi o wstawienie kodu if czyli coś w stylu
  1. <?
  2. if(!isset($_POST['submit']){
  3.  
  4. echo 'form z logowaniem';
  5. }else{
  6. /* tu klasa autoryzacji która chyba jest źle skonstruowana... */
  7. }
  8. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.