Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] sesje prosty przyklad
Forum PHP.pl > Forum > Przedszkole
kraftix
Witam smile.gif
uczę się dopiero PHP i chcę zrobić logowanie z bazy danych na sesjach. W bazie mam login, haslo i numer i chciałbym, żeby ten numer oznaczał poziom użytkownika, czyli że np 0 to user, 1 to moderator, a 2 to admin. Tylko jak się za to wszystko zabrać? Mam stronke logowanie.php, index.php, strona2.php i jak to teraz zrobić? Chce, żeby np na index.php admin widzial wszystko, moderator mniej, a user np tylko link do strona2.php. To wiem jak zrobić, ale jak zrobić w pliku rozróżnianie przez to co mam w bazie? Czytałem i szukałem o sesjach, ale nie znalazłem o tym info, tylko ogolne informacje.

Pozdrawiam smile.gif
Kszyhuu
Robisz formularz do logowania na stronie dajmy na to zaloguj.html, który wygląda tak:
  1. <form method="post" action="logowanie.php">
  2. Login: <input type="text" name="login" size="10" class="input">
  3. Hasło: <input type="password" name="pass" size="10" class="input">
  4. <input class="input" type="submit" name="submit" value="Zaloguj">

W pliku logowanie.php robisz coś takiego:
  1. <?php
  2. mysql_connect('HOST','BAZA','PASS') or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error().'<br />Proszę spróbować ponownie za chwilę.');
  3. $login = mysql_escape_string($_POST['login']);
  4. $pass = mysql_escape_string($_POST['pass']);
  5. $zapytanie = mysql_query("SELECT * FROM user WHERE login = '$login'");
  6. $dane = mysql_fetch_array($zapytanie);
  7.  
  8. if(isset($_POST['login']) && isset($_POST['pass'])) {
  9. if($login ==''.$dane['login'].'' && $pass ==''.$dane['pass'].'') {
  10. if($wartosc == 1) {
  11. $_SESSION['prawa']='1';
  12. $_SESSION['login']=''.$dane['login'].'';
  13. header("Location: index.php");
  14. }
  15. if($wartosc == 2) {
  16. $_SESSION['prawa']='2';
  17. $_SESSION['login']=''.$dane['login'].'';
  18. header("Location: index.php");
  19. }
  20. if($wartosc == 3) {
  21. $_SESSION['prawa']='3';
  22. $_SESSION['login']=''.$dane['login'].'';
  23. header("Location: index.php");
  24. }
  25. }
  26. }
  27. ?>

I teraz w pliku index.php robisz tak:
  1. <?php
  2. include("logowanie.php")
  3. if (isset($_SESSION['prawa']) {
  4. if ($_SESSION['prawa'] == "1") {
  5. ?>
  6. KOD HTML DLA ADMINA
  7. <?php
  8. }
  9. if ($_SESSION['prawa'] == "2") {
  10. ?>
  11. KOD HTML DLA MODA
  12. <?php
  13. }
  14. if ($_SESSION['prawa'] == "3") {
  15. ?>
  16. <a href="strona2.php">KLIKNIJ TUTAJ GŁUPI USERZE</a>
  17. <?php
  18. }
  19. ?>


Spisane na kolanie, mam nadzieję, że zatrybi, a jeśli nie to przynajmniej masz schemat i sobie przerobisz. smile.gif
$_SESSION['login']=''.$dane['login'].''; Dodane w razie, gdybyś chciał dodatkowo zrobić coś w stylu 'zalogowany jako'. ;]

1=Admin
2=Mod
3=User
kraftix
Dzieki troche to zrozumiałem dzieki Tobie smile.gif. Mam kilka pytań jeszcze. Z pliku index.php musiałem wywalić include("logowanie.php"), bo mi nie wykrywalo zmiennych login i pass, a jak wywaliłem to działa chyba dobrze. Jak to z tym jest?
Jak zrobie strona2.php to co mam tam zalaczyc w gorze, zeby dobrze dzialalo?
Jak zrobic wylogowanie poprawnie? Wrzucilem do pliku
  1. <?php
  2. session_start();
  3. session_destroy();
  4.  
  5. ?>

i teraz to sie nawet zalogowac nie moge poprawnie...

Pozdrawiam smile.gif
MateuszS
Nie możesz się zalogować bo session_destroy() od razu niszczy wszystkie sesje. Jak można się domyśleć używa się tej funkcji do m.in. wylogowywania. Czyli np. tworzysz plik wyloguj.php tam wkładasz tą funkcję i przekierowanie na jakąś inną stronę. session_start(); dajesz na początku każdego pliku w któym używasz sesji. (w 1 linijce !)
kraftix
Dzieki, już rozumiem smile.gif. A jak w PHP zrobic, zeby sesja automatycznie sie kasowala po 2 minutach?

Pozdrawiam smile.gif
xmorfeuszx
Kurde chyba mi już na wzrok padło albo skończyły się pomysły, albo....
diabeł tkwi w szczególe a ja go znaleźć nie mogę sad.gif

mam ten kod co wyżej
  1. <?php
  2. mysql_connect('serwer','login','haslo') or die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error().'<br />Proszę spróbować ponownie za chwilę.');
  3. $login = mysql_escape_string($_POST['login']);
  4. $pass = mysql_escape_string($_POST['pass']);
  5. $zapytanie = mysql_query("SELECT * FROM test WHERE uzytkownik = '$login'");
  6. $dane = @mysql_fetch_array($zapytanie);
  7. /*$dane = @mysql_num_rows($zapytanie);
  8. if($dane==0)
  9. {echo "błąd !!!!";
  10. $test=@mysql_query("select * from test");
  11. $test1=@mysql_num_rows($test);
  12. echo $test;
  13. }
  14. else
  15. {
  16.   */
  17. if(isset($_POST['login']) && isset($_POST['pass'])) {
  18. if($login ==''.$dane['login'].'' && $pass ==''.$dane['pass'].'') {
  19. if($wartosc == 1) {
  20. $_SESSION['prawa']='1';
  21. $_SESSION['login']=''.$dane['login'].'';
  22. header("Location: index.php");
  23. }
  24. if($wartosc == 2) {
  25. $_SESSION['prawa']='2';
  26. $_SESSION['login']=''.$dane['login'].'';
  27. header("Location: index.php");
  28. }
  29. if($wartosc == 3) {
  30. $_SESSION['prawa']='3';
  31. $_SESSION['login']=''.$dane['login'].'';
  32. header("Location: index.php");
  33. }
  34. }
  35. /*}*/
  36. }
  37. ?>
  38.  

withstupidsmiley.gif
I zatrzymuje mi się na pliku logowanie.php i mam biały ekran....

Mógłby ktoś spojrzeć na to świeższym okiem i wytknąć mi co przeoczam wstydnis.gif

Z góry dzięki

Pozdrawiam
Morfeusz
fenix.robi
Zobacz co przechowujesz w zmiennej
  1. $wartosc
bo niewidze gdzie zapisujesz do niej jakieś dane, a tak to ja bym nie robił tyle warunków tylko

  1.  
  2. if($login ==''.$dane['login'].'' && $pass ==''.$dane['pass'].'') {
  3.  
  4.     $_SESSION['prawa']=$wartosc;
  5.  
  6.     $_SESSION['login']=''.$dane['login'].'';
  7.  
  8.     header("Location: index.php");
  9. }


aha jesli $wartosc zczytujesz z bazy to moze jest w zmiennej $dane['wartosc'], ale to juz spekulacje
xmorfeuszx
przypisałem już nawet zmiennej wartość na sztywno
  1. $wartosc=1;

wkleiłem nawet sposób fenix.robiego i dalej lipa....

biały ekran...

Już powoli brakuje mi koncepcji....
Powoli utwierdzam się w przekonaniu, że coś mi nie przekazuje danych z bazy :| - bo już próbowałem kilka skryptów logowania i za każdym razem coś nie tak :|

a jak się zapatrujecie na przechowywanie danych w pliku blinksmiley.gif - bo zostaje mi coraz mniej cierpliwości i chęci na motanie się z tym...
Hakersky
Witam mam taki błąd:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in D:\Programy\WebServ\httpd\test.php on line 8

Co to może być?
kamil_lk
Zapytanie Ci nie zwraca żadnego wyniku.
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.