Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: uwierzytelnianie - ktora z dwoch realizacji bardziej poprawna
Forum PHP.pl > Forum > PHP
be2k
witam
chcialbym sie dowiedziec ktory sposob uwierzytelniania - nie chodzi mi o samo uwierzytelnianie, ale o realizacje calego jego procesu - jest lepszy z punktu widzenia programistycznego i konwencji (czyli np. obie metody sa poprawne programistycznie, ale np. przyjmuje sie ze lepiej jest realizowac tak niz tak)

realizacja nr 1:

index.php
  1. <?php
  2. // znaczniki html, head, body itp
  3. // wczytany css
  4. //tu wyswietlony formularz html'owy do wpisania loginu i hasla. action formularza ustawione na login.php
  5. ?>


login.php
  1. <?php
  2. if(isset($_POST['login']) && isset($_POST['haslo']))
  3. {
  4.  // tu kod sprawdzajacy czy taki uzytkownik istnieje
  5.  
  6.  if( poprawny uzytkownik )
  7.  {
  8. $_SESSION['user_id']=jakis tam user id;
  9. header('Location: index2.php');
  10.  }
  11.  else
  12.  {
  13. header('Location: index.php'); 
  14. //lub ew. do pliku bad_login.php w ktorym jest rowniez formularz logowania ale z d
    odatkowym tekstem bledny login i/lub haslo
  15.  }
  16. }
  17. else
  18. {
  19.  header('Location: index.php'); 
  20. }
  21. ?>


index2.php - ten plik dostepny tylko dla zalogowanych uzytkownikow
  1. <?php
  2. // znaczniki html, head, body itp
  3. // wczytany css, js'y
  4. if(isset($_SESSION['user_id']) && $_SESSION['user_id']>0)
  5. {
  6.  //wlasciwy kod strony
  7.  //tutaj wszystkie linki kierujace wewnatrz witryny kieruja do INDEX2.php
  8. }
  9. else
  10. {
  11.  header('Location: index.php');
  12.  //jesli by ktos chcial 'z palca' wpisac taki adres to zostanie przekierowany na index.php a tym samym okno logowania
  13. }
  14. ?>




realizacja nr 2:

index.php
  1. <?php
  2. // znaczniki html, head, body
  3. // wczytany css, js'y
  4. if(isset($_SESSION['user_id']) && $_SESSION['user_id']>0)
  5. {
  6.  require('index2.php');
  7. }
  8. {
  9. // formularz do logowania z akcja na login.php
  10. }
  11. ?>


login.php
  1. <?php
  2. if(isset($_POST['login']) && isset($_POST['haslo']))
  3. {
  4.  // tu kod sprawdzajacy czy taki uzytkownik istnieje
  5.  
  6.  if( poprawny uzytkownik )
  7.  {
  8. $_SESSION['user_id']=jakis tam user id;
  9. header('Location: index.php');
  10.  }
  11.  else
  12.  {
  13. header('Location: index.php'); 
  14. //lub ew. do pliku bad_login.php w ktorym jest rowniez formularz logowania ale z d
    odatkowym tekstem bledny login i/lub haslo
  15.  }
  16. }
  17. else
  18. {
  19.  header('Location: index.php'); 
  20. }
  21. ?>


index2.php
  1. <?php
  2. //wlasciwy kod strony
  3. //tutaj wszystkie linki kierujace wewnatrz witryny kieruja do INDEX.php
  4. ?>


roznice pomiedzy realizacjami:
  1. stosujac realizacje nr 1 trzeba w dwoch miejscach wypisywac znaczniki html, head, body, dwukrotnie wczytywac css'a. W realizacji nr 2 robie to tylko raz, w pliku index.php gdyz index2.php jest includowany
  2. stosujac realizacje nr 2 nie ma sprawdzania w pliku index2.php czy poprawny uzytkownik, bo plik ten jest includowany i jego nazwa nie pokaze sie w pasku przegladarki (oczywiscie mozna to zrobic jak ktos wymysli sobie taka nazwe. no chyba ze sie go umiesci w jakims katalogu, do ktorego .htaccess zabroni dostepu)
  3. ale za to stosujac realizacje nr 1, po zalogowaniu nie przchodzimy juz przez strone index.php, tylko poruszamy sie juz tylko w obrebie pliku index2.php.
    natomiast w realizacji nr 2 za kazdym razem jest przejscie przez plik index.php i sprawdzenie czy uzytkownik zalogowany i wybranie albo includowania pliku index2.php albo wyswietlenie formularza logowania
  4. w realizacji nr 2 jesli w pliku login.php jesli spelniony warunek, ze poprawny uzytkownik to nie ma przekierowania na index2.php tak jak ma to miejsce w realizacji nr1 tylko spowrotem na index.php (juz ustawione $_SESSION["user_id"], wiec bedzie spelniony odpowiedni warunek w index.php)
lukir
Lepsza jest raczej ta pierwsza metoda.
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.