Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: uprawnienia budowane na sesji
Forum PHP.pl > Forum > PHP
zomb
Witam,
Właśnie projektuje aplikacje. Aplikacja składa się z '2 części': dla admina i dla zwykłego usera. Powinno to wyglądać tak:
plik login.php (przykładowy brany z neta)
  1. <?php
  2.  
  3. if (isset($_POST['konto']) and isset($_POST['password']) )
  4.  
  5. {
  6.  
  7. require('common/config.php');
  8.  
  9. $konto=mysql_real_escape_string(trim($_POST['konto']));
  10.  
  11. $password=mysql_real_escape_string(trim($_POST['password']));
  12.  
  13. if ($konto!="" and $password!="")
  14.  
  15. {
  16.  
  17. $password = sha1(md5($password));
  18.  
  19. $zapytanie="SELECT id FROM users WHERE login='$konto' and password ='$password'";
  20.  
  21. $temp=mysql_query($zapytanie) or die("Wystąpił błąd");
  22.  
  23. $ile=mysql_num_rows($temp);
  24.  
  25. $temp=mysql_fetch_array($temp);
  26.  
  27. $id=$temp['id'];
  28.  
  29.  
  30.  
  31. if ($ile==1)
  32.  
  33. {
  34.  
  35. $_SESSION['user_id']=$id;
  36.  
  37. $_SESSION['login']=$konto;
  38.  
  39. include ("index.php");
  40. }
  41.  
  42. else echo ('<font style="size:14px;position:relative;margin:0px auto;top:300px;"><center><b>Podales zle dane.</b><br />Kliknij <a href="index.php">wstecz</a> aby sprobowac ponownie.</font>');
  43.  
  44. }
  45.  
  46. }
  47.  
  48. else include ("login.html");
  49. ?>


  1. include('common/config.php');
  2. $users = "SELECT * FROM users WHERE login='".questionmark.gif?."'";
  3. $pusers = mysql_query ($users);
  4. while($pousers = mysql_fetch_array($pusers))
  5. {
  6. if ($pousers['upraw'] == 'admin')
  7. {
  8. questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif
  9. }
  10. else
  11. {
  12. questionmark.gifquestionmark.gifquestionmark.gifquestionmark.gif
  13. }
  14. }







Potrzebuje to przerobić tak aby działało następująco: user wpisuje login i hasło, skrypt sprawdza login jeżeli wpis uprawnienia przy danym loginie = admin skrypt tworzy sesje 'admin' jeżeli = user skrypt tworzy sesje 'user'. Tak abym mógł zabezpieczyć wszystkie pliki tzn: if (sesja = admin) { tresc } else twoja sesja wygasła... jestem zielony z sesji wiec proszę o pomoc..

tofik1778983
Przerób sobie moje dzisiejsze wypociny. Przykład z neta tylko przerobiony na moje potrzeby.

Tarez żeby na przykład wyswietlić coś tylko dla zalogowanych userów dajesz ifa
if($_SESSION["uzytkownik"] > 0) sprawdzasz id sesji, jesli jest wieksza od 0 to znaczy ze to co tu umieścisz będzie widoczne tylko dla zalogowanych ( każdy nie zalogowany od razu ma przypisane id=0)
Jeśli chchesz np zeby coś było widoczne dla tylko konkretnego usera dajesz np
if($_SESSION["uzytkownik"] == 1 ) i to będzie wyswietlone tylko dla usera z tablicy którego id=1
Przeanalizuj myślęze nie jest to zbyt skomplikowany kod ;]
Nie wiem jak ty tego uzyjesz ale u mnie działa tak jak sobie zaplanowalem.
Dodam że część kodu z session_start() u mnie jest zamieszczone w innym pliku tak być musiało żeby dobrze działało z resztą strony.


  1. <?
  2. if ($id==zalogujxtd) {
  3.  
  4. $uzytkownicy = array(1 =>
  5. array('login' => 'qwe', 'haslo' => sha1('qwe')),
  6. array('login' => 'asd', 'haslo' => sha1('asd')),
  7. array('login' => 'zxc', 'haslo' => sha1('zxc')),
  8. );
  9.  
  10. function czyIstnieje($login, $haslo)
  11. {
  12. global $uzytkownicy;
  13. $haslo = sha1($haslo);
  14. foreach($uzytkownicy as $idd => $dane)
  15. {
  16. if($dane['login'] == $login && $dane['haslo'] == $haslo)
  17. {
  18. return $idd; // id uzytkownika z tablicy
  19. }
  20. }
  21. return false;
  22. }
  23.  
  24. // .......
  25.  
  26. if($_SESSION['uzytkownik'] > 0)
  27. {
  28. // Ktos jest zalogowany
  29. echo ' obecnie zalogowany: '. $uzytkownicy[$_SESSION['uzytkownik']]['login'];
  30. echo'<br><br> <a href="index.php?id=wylogujxtd">wyloguj się</a>';
  31. }
  32. else
  33. {
  34. // Niezalogowany
  35. if($_SERVER['REQUEST_METHOD'] == 'POST')
  36. {
  37. if(($idd = czyIstnieje($_POST['login'], $_POST['haslo'])) !== false)
  38. {
  39. // Logujemy uzytkownika, wpisal poprawne dane
  40. $_SESSION['uzytkownik'] = $idd;
  41. echo $uzytkownicy[$_SESSION['uzytkownik']]['login'].' zostałeś/aś zalogowany!<br>';
  42. echo'<br> <a href="index.php?id=wylogujxtd">wyloguj się</a>';
  43. }
  44. else { echo 'Podales nieprawidlowe dane'; }
  45. }
  46. else
  47. {
  48. echo '<form method="post" action="index.php?id=zalogujxtd">
  49. Zaloguj sie:<br>
  50. <input class="inp_pass" type="password" name="login"/><br>
  51. <input class="inp_pass" type="password" name="haslo"/><br>
  52. <input type="submit" value="loguj"/></form>';
  53. }
  54. }
  55. }
  56.  
  57.  
  58. if ($id==wylogujxtd)
  59. {
  60.  
  61. echo 'użytkownik: ';
  62. if($_SESSION['uzytkownik']=='1') { print'qwe';} else {}
  63. if($_SESSION['uzytkownik']=='2') { print'asd';} else {}
  64. if($_SESSION['uzytkownik']=='3') { print'zxc';} else {}
  65. echo'został/a wylogowany/a';
  66. }
  67.  
  68. ?>
tehaha
w takim przypadku sesje są dość proste w użyciu po prostu przy logowaniu ustawiasz dodatkową zmienna sesji z poziomem administracyjnym zalogowanego np.
dla usera dasz $_SESSION['user_auth_level'] = 1 , dla admina $_SESSION['user_auth_level'] = 2 , potem przy wyświetlaniu treści będzie sprawdzał tą zmienną , jeżeli nie jest ustawiona to user nie jest zalogowany, jeżeli ma wartość 1 to jest zwykłym zalogowanym użytkownikiem, jeżeli wartość 2 to jest adminem i oprócz treści dodatkowo wyświetlisz treść dostępna dla admina
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.