Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Sesje problem
Forum PHP.pl > Forum > Przedszkole
andrzej7322
Witam.
Jestem początkujący w php i nie wiem czy dobrze rozpoznaje problem jeżeli źle go rozpoznałem to proszę o wyrozumiałość.
Napisałem własnego CMS'a i dziś ulepszyłem go o dział administratorzy.
Stworzyłem system zarządzania administratorami. Utworzyłem kliku administratorów i określiłem ich role. Gdy jestem zalogowany jako główny administrator i dodaję nowego administratora to automatycznie zostaje na niego przelogowany.W ten sam sposób dzieje się gdy edytuje jednego z administratorów automatycznie podczas zapisu zmian zostaje przelogowany.
Z góry dziękuje za pomoc.
pedro84
Gdzieś masz błąd w kodzie, ale bez tego trudno będzie powiedzieć cokolwiek.
andrzej7322
To jet kod index.php
  1. <?php
  2. include("php/conn.php");
  3. if (isset($_SESSION['user_id']) and isset($_SESSION['login']))
  4. {
  5. include ("index2.php");
  6. }
  7. else
  8. {
  9.  
  10. include ("login.php");
  11.  
  12. }
  13. ?>
pedro84
Ten kod to akurat dużo nie mówi. Przechowujesz w sesji rolę użytkownika?
gOdi_1991
po co ci 2 sessions start ?
andrzej7322
Nie role użytkownika przechowuję w bazie danych ale ograniczenia działają mi poprawnie.
pedro84
Cytat
Utworzyłem kliku administratorów i określiłem ich role

To powinieneś przechowywać w sesji moim zdaniem.

Cytat
Gdy jestem zalogowany jako główny administrator i dodaję nowego administratora to automatycznie zostaje na niego przelogowany.

O, ten fragment kodu pokaż, o niego mi chodziło wcześniej smile.gif
andrzej7322
To wygląda w tak jakby przy wprowadzeniu jakichkolwiek zmian w tabeli w bazie danych automatycznie przeładowywało mi sesje wczytują dane z edytowanego lub dodawanego rekordu.
  1. elseif(isset($_GET['admin']) && $_GET['admin']=='dodaj')
  2. {
  3. echo'<table class="roz">
  4. <tr>
  5. <td><p>Dodawanie administratora</p></td>
  6. </tr>
  7. </table>';
  8. echo '<form method="POST" action="index.php?admin=dopisz">
  9. <table class="roz"style="width:200px;height:auto;float:left;border:0px;">
  10. <tr><td class="a"><p>Nazwa użytkownika</p></td></tr>
  11. <tr><td class="a"><p>Hasło</p></td></tr>
  12. </table><table class="ror"style="float:left;width:400px;height:auto;margin-top:0px;">
  13.  
  14. <tr>
  15. <td width="100%"class="d">
  16. <input type="text"name="nazwa" style="width:95%;border:0px;color:#2870a8;margin-left:2px;"value=""></td>
  17. </tr>
  18. <tr><td width="100%"class="d">
  19. <input type="password"name="pass" style="width:70%;border:0px;color:#2870a8;margin-left:2px;"></td>
  20. </tr>
  21. </table>
  22. <table class="roz"style="border-bottom:solid 0px;margin-bottom:-5px;">
  23. <tr><td width="100%"class="a"><p>Ograniczenia</p></td></tr></table>
  24. <table class="ror"style="float:left;height:auto;margin-top:0px;">';
  25. if($wiersz['ograniczenia']==0){
  26. echo'<tr><td class="d"><p>Pełny dostęp <input type="radio" name="dostep" value="0" checked="checked"></p></td></tr>';
  27. }
  28. if($wiersz['ograniczenia']!=0){
  29. echo'<tr><td class="d"><p>Pełny dostęp <input type="radio" name="dostep" value="0"></p></td></tr>';
  30. }
  31. if($wiersz['ograniczenia']==1){
  32. echo'<tr><td class="d"><p>Administracja sklepu oraz strony <input type="radio" name="dostep" value="1" checked="checked"></p></td></tr>';
  33. }
  34. elseif($wiersz['ograniczenia']!=1){
  35. echo'<tr><td class="d"><p>Administracja sklepu oraz strony <input type="radio" name="dostep" value="1"></p></td></tr>';
  36. }
  37. if($wiersz['ograniczenia']==2){
  38. echo'<tr><td class="d"><p>Administracja sklepu <input type="radio" name="dostep" value="2" checked="checked"></p></td></tr>';
  39. }
  40. elseif($wiersz['ograniczenia']!=2){
  41. echo'<tr><td class="d"><p>Administracja sklepu <input type="radio" name="dostep" value="2"></p></td></tr>';
  42. }
  43. echo'</table>
  44. <input type="submit" class="edytuj"value="Zapisz"></input>
  45. <a href="index.php?admin"class="edytuj">Powrót</a>
  46. </form>';
  47. }
  48. elseif(isset($_GET['admin']) && $_GET['admin']=='dopisz')
  49. {
  50. $pass=$_POST['pass'];
  51. $haslo=sha1(md5($pass));
  52. $login=$_POST['nazwa'];
  53. $ograniczenia=$_POST['dostep'];
  54.  
  55. mysql_query("INSERT INTO user VALUES(0,'$login','$haslo','$ograniczenia')");
  56. echo'<table class="roza">
  57. <tr>
  58. <td class="i"><p>Administratorzy</p></td>
  59. </tr></table>';
  60. echo '<div class="wyn">Pomyślnie dodałem Administratora !</div>';
  61. echo('<html>
  62. <meta http-equiv="refresh" content="1; URL=index.php?admin">
  63. </html>');
  64. }


Cytat(gOdi_1991 @ 8.05.2010, 14:06:30 ) *
po co ci 2 sessions start ?

To chyba nie robi jakiegoś problemu. Ten drugi session_start znalazł się tam ponieważ modyfikowałem wielokrotnie ten kod próbowałem różnych opcji i to jest taka pozostałość.
CyberDuck_
Masz duza niekonsekwencje w zmiennych.
Nie rob dwa razy session_start bo to nic nie daje. Chyba, ze ja gdzies
wczesniej zamykasz. Staraj sie utrzymac w jednej zmiennej nazwe
uzytkownika zalogowanego, w innej np uprawnienia.
Ja to zrobilem jeszcze tak, ze w jednej zmiennej wprowadzam uprawnienia
w stylu 0100101001011111 i odpowiednie warunki pozwalaja w odpowiednich
miejscach na rozne akcje. :
  1. if (substr($zmienna,$pozycja,1) == '1') {

Np mimo, ze nadaje komus uprawnienia to mozna
zadecydowac czy moze modyfikowac nie swoje teksty, czy moze wogole
edytowac teksty, czy moze zagladac do szpiega, itd ...

Moim zdaniem podczas edycji do zmiennej sesji przepisujesz gdzies uzytkownika
i wten sposob przelogowujesz sie na niego.
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.