Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] System logowania i sesje
-gosc_mufan-
post
Post #1





Goście







Witam mam problem.Dopiero zaczynam zabawe z php a juz musze napisac system logowania oparty mysql. Czy moglby mi ktos pomoc dokladnie chodzi o to z na stronce sa miejsca na login i haslo i po kliknieciu na loguj powino sprawdzac czy taki user jest w bazie danych. Dziekuje za szybka odpowiedz:)

----------------------
Pozwoliłem sobie zmienić nazwę
wątku : )
---
~strife
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
idas
post
Post #2





Grupa: Zarejestrowani
Postów: 35
Pomógł: 0
Dołączył: 23.03.2007

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


Yo!
Mam pytanie: przedstawione tutaj kody do logowania dzialaja ok. W momencie w ktorym uzytkownik sie zaloguje mamy zmienna sesyjna, ktora to informuje ze jest zalogowany. Wyobrazmy sobie ze do zmiennej sesyjnej przypisuje nazwe uzytkownika powiedzmy $login. Teraz mam zmienna sesyjna $_SESSION['login'] = $login; i na jej podstawie sprawdzam czy dany uzytkownik jest zalogowany.
Wyczytalem jeszcze, ze w wypadku uzywania sesji trzeba wklepywac na poczatku dokumentu linijke session_start();
Hmmm...moje pytanie jest takie:
W pliku logowanie.php mam skrypt ktory pobiera mi wpisana z klawiatury nazwe uzytkownika, haslo i sprawdza czy w bazie danych w tabeli UZYTKOWNICY jest w kolumnie login i haslo taka sama wartosc jak ta podana przez uzytkownika. Jesli ja znajdzie to utwozy ta zmienna sesyjna $_SESSION['login']=$login; JAK TA ZMIENNA PRZEKAZYWAC NA KOLEJNE PODSTRONY DO KTORYCH BEDE MIAL ODNOSNIKI? W URL raczej odpada bo to kazdy przeciez zobaczy (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Dzieki

Ten post edytował idas 26.03.2007, 00:33:32
Go to the top of the page
+Quote Post
strife
post
Post #3





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

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


Cytat(idas @ 26.03.2007, 01:16:25 ) *
Yo!
Mam pytanie: przedstawione tutaj kody do logowania dzialaja ok. W momencie w ktorym uzytkownik sie zaloguje mamy zmienna sesyjna, ktora to informuje ze jest zalogowany. Ale jak w takim wypadku rozroznic np. uzytkownika Jas od uzytkownika Adam? Bo z tego co widze to w momencie pomyslnego logowania jest tworzona jedna i ta sama zmienna...


Możesz rozróżnić tych użytkowników poprzez nadanie im odpowiednich ról. Czyli w bazie danych tworzysz sobie dwie tabele, w pierwszej masz użytkowników, a w drugiej maski dostępu ( podział na role ). Powiedzmy, że tabela użytkowników zawiera następujące pola

Kod
id | name | password | mask
1     Jaś       md5hash    1
2    Adam    md5hash    2


Natomiast tabela z maskami, będzie wyglądała w ten sposób:

Kod
id | name | has_admin |
1      admin     1
2       user      0


To chyba najprostrzy przykład jaki może być. No i wtedy, w momencie zalogowania dodajesz kolejną zmienną, która będzie odpowiadała za dostęp do panelu administracyjnego. $_SESSION['admin']. W ten sposób możesz rozróżnić użytkowników i przydzielać im odpowiednie role. Poszukaj na forum na ten temat już trochę o tym pisaliśmy.

  1. <?php
  2. $query = mysql_query("SELECT * FROM uzytkownicy WHERE `user` = '" . $_POST['user'] . "' ");
  3. $fetch = mysql_fetch_array($query);
  4. if ( $fetch ) // jesli user zostanie znaleziony w bazie
  5. {
  6. if ( md5( $_POST['pass'] ) == $fetch['haslo'] ) // jesli haslo sie zgadza
  7. {
  8.  echo 'logowanie zakonczone sukcesem';
  9.  $_SESSION['login'] = '1';
  10.  // dodawanie ról w momencie poprawnego zalogowania
  11.  $query = mysql_fetch_array( mysql_query("SELECT * FROM maski_dostepu WHERE id = " . $fetch['mask'] . " ") );
  12.  $_SESSION['has_admin'] = $query['has_admin'];
  13.  /**
  14. * potem sprawdzac czy ktos ma gdzie dostep przykladowo czy Janek moze
  15. * wejsc na strone x sprawdzasz tak 
  16. * if ( ! empty( $_SESSION['has_admin'] ) )
  17. * { 
  18. * echo 'masz dostep';
  19. * }
  20. */
  21. }
  22. else
  23. {
  24.  echo 'Przykro mi, ale podane haslo jest bledne';
  25.  }
  26. }
  27. else
  28. {
  29.  echo 'Podany uzytkownik nie istnieje w bazie danych';
  30. }
  31. ?>


W prostrzy sposób możesz tych użytkowników rozróżnić, poprzez dodanie pola has_admin w tabeli z użytkownikami, ale takie rozwiązanie jest mało optymalne, bo musisz zmienić tą wartość wtedy u każdego użytkownika, a jak widzisz z podziałem na role zmieniasz to tylko w jednym rekordzie.

uff... mam nadzieję, że teraz już to rozumiesz. Idę spać.

~edit
Cytat
JAK TA ZMIENNA PRZEKAZYWAC NA KOLEJNE PODSTRONY DO KTORYCH BEDE MIAL ODNOSNIKI?


Nie rozumiem, przecież gdy na początku każdej tej strony będziesz podawał session_start to ta zmienna będzie widoczna, więc nie ma sensu loginu inaczej tego przekazywać. Najlepiej będzie jak sam sobie to sprawdzisz.

Pozdrawiam!
Go to the top of the page
+Quote Post

Posty w temacie
- gosc_mufan   [php] System logowania i sesje   21.07.2006, 11:00:34
- - Cysiaczek   Skoro musisz napisać, to znaczy, że to k...   21.07.2006, 11:08:04
- - adi2005   Jest masa ksiazek na ten temat. Mozna je już kupić...   21.07.2006, 11:31:34
- - scanner   @adi2005: jeszcze jedna taka odpowiedz i zaliczysz...   21.07.2006, 13:45:16
- - adi2005   @scanner: Oki sorki ale jednak chciałbym wied...   21.07.2006, 14:03:45
- - gosc_mufan   Tak probowalem sie bawic z gotowcami ale mi nie sz...   21.07.2006, 15:19:54
- - acztery   formularz wysyla dane login i password do naszego ...   21.07.2006, 15:41:03
- - strife   Witam, Napiszę Ci dość szybko czym jest logowanie...   21.07.2006, 16:04:48
- - robos85   Zrobiłem takie pliki: logowanie.html: [HTML] pobie...   20.03.2007, 21:41:27
- - kwiateusz   bezpośrednio do plik.php? to czego oczekujesz że z...   20.03.2007, 21:56:22
- - robos85   ok działa oto moje pliki: logowanie.html pomijam, ...   20.03.2007, 22:30:44
|- - shaolin33   Cytat(robos85 @ 20.03.2007, 22:30:44 ...   19.03.2013, 09:44:46
- - kwiateusz   np. zamiast [PHP] pobierz, plaintext <?phpprint...   20.03.2007, 22:39:22
- - robos85   kurde rzeczywiście ;p Ale to wynik tego że nie śpi...   20.03.2007, 22:44:49
- - kwiateusz   wystarczy manula przejrzeć... session_id" title="Z...   20.03.2007, 22:47:05
- - robos85   zrobiłem taki plik: wybór.html [HTML] pobier...   20.03.2007, 23:32:15
- - Cienki1980   Jeżeli chcesz korzystać z kodu PHP musisz umieszcz...   20.03.2007, 23:38:41
- - robos85   yhm ok będę to robił, bo myślałem że jakoś da radę...   20.03.2007, 23:43:37
- - kwiateusz   da o ile możesz używać plików htacc...   21.03.2007, 00:51:44
- - idas   Yo! Mam pytanie: przedstawione tutaj kody do l...   26.03.2007, 00:16:25
|- - strife   Cytat(idas @ 26.03.2007, 01:16:25 ) Y...   26.03.2007, 00:49:37
- - idas   Wlasnie sie przekonalem, ze zmienne sesyjne u mnie...   26.03.2007, 15:41:34
|- - strife   Cytat(idas @ 26.03.2007, 16:41:34 ) W...   26.03.2007, 18:14:10
- - idas   Yo! Jednak sesje dzialaja. Jednak mam pewne py...   26.03.2007, 20:05:51
- - strife   A jakich rezultatów się spodziewasz, musi działać....   26.03.2007, 21:04:46
- - idas   HeHe nie no o session_start(); to pamietalem;) Juz...   28.03.2007, 12:27:15
|- - strife   Cytat(idas @ 28.03.2007, 13:27:15 ) z...   28.03.2007, 16:14:17
- - idas   Dzieki, poczytam A mam jeszcze jedno pytanie: cz...   29.03.2007, 15:13:19
|- - strife   Cytat(idas @ 29.03.2007, 16:13:19 ) D...   29.03.2007, 16:18:40
- - idas   Dzieki Ja zrobilem u siebie logowanie tak: jesli...   29.03.2007, 22:33:48
- - super_e107   Sorki że odkopuje, ale nie ma sensu pisać nowego t...   31.12.2007, 14:48:00
- - Dex19   Witam, tym razem ja odkopię Jestem (php przedszko...   26.01.2011, 18:13:05
- - Noidea   Na większości (jak nie wszystkich) hostingach wspó...   26.01.2011, 18:25:26
- - Dex19   bardzo dziękuję za odpowiedź CytatOpcja trzecia j...   26.01.2011, 19:10:52


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

 



RSS Aktualny czas: 16.10.2025 - 17:28