Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]gaśnięcie sesji po przejściu w folder admin/
Forum PHP.pl > Forum > Przedszkole
Johnas
Witam! nie wiem czemu wylogowuje mnie po przejściu do folderu admin. Nie mam tak że tylko w admin mnie wylogowuje ale z całej strony. Odnośnik w footer.php wygląda tak:
  1. <?php
  2. if ($_SESSION['id_rangi'] == 1){
  3. echo '<p><center><a href="admin/index.php">Panel Admina</a></center></p>';
  4. }
  5. ?>


A sesje w panelu admina wygląda tak jak we wszystkich plikach
  1. <?php
  2. session_start(); // rozpoczęcie sesji
  3. ?>
  4. <?php include('db.php'); ?>

to są pierwsze linijki w panelu admina. Co jest nie tak?

pomoże ktoś?
konole
Pokaż trochę więcej kodu, bo ciężko coś z tego wyczytać...
Johnas
index.php w folderze admin
  1. <?php
  2. session_start(); // rozpoczęcie sesji
  3. ?>
  4.  
  5. <?php include('db.php'); ?>
  6.  
  7. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  8. <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="pl" xml:lang="pl">
  9. <head>
  10.  
  11. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  12. <meta http-equiv="Content-Style-Type" content="text/css" />
  13. <meta http-equiv="Content-Language" content="pl" />
  14. <meta http-equiv="imagetoolbar" content="no" />
  15.  
  16. <title>Panel Admina- Youphoto.pl</title>
  17.  
  18. <link href="css/style.css" rel="stylesheet" type="text/css" media="screen" />
  19.  
  20. <script type="text/javascript">
  21. // <![CDATA[
  22.  
  23. /**
  24. * Set display of page element
  25. * s[-1,0,1] = hide,toggle display,show
  26. */
  27. function dE(n, s, type)
  28. {
  29. if (!type)
  30. {
  31. type = 'block';
  32. }
  33.  
  34. var e = document.getElementById(n);
  35. if (!s)
  36. {
  37. s = (e.style.display == '' || e.style.display == 'block') ? -1 : 1;
  38. }
  39. e.style.display = (s == 1) ? type : 'none';
  40. }
  41.  
  42. // ]]>
  43. </script>
  44.  
  45. </head>
  46.  
  47. <body class="ltr">
  48.  
  49. <?php
  50. if (isset($_SESSION['login'])){
  51. if ($_SESSION['id_rangi'] == 1){
  52. echo <<< LIKE
  53. <div id="wrap">
  54. <div id="page-header">
  55. <h1>Panel Admina Version 1.0</h1>
  56. <p id="skip"><a href="#acp">Przejdź do treści</a></p>
  57.  
  58.  
  59.  
  60. </div>
  61.  
  62. <div id="page-body">
  63. <div id="tabs">
  64. <ul>
  65.  
  66. <li id="activetab"><a href="index.php?mode=overview&language=pl"><span>Informacje</span></a></li>
  67.  
  68. <li><a href="index.php?mode=install&language=pl"><span>Zarządzanie reklamą</span></a></li>
  69.  
  70. <li><a href="index.php?mode=convert&language=pl"><span>Urzytkownicy</span></a></li>
  71.  
  72. <li><a href="index.php?mode=convert&language=pl"><span>Zdjęcia</span></a></li>
  73.  
  74. <li><a href="index.php?mode=convert&language=pl"><span>Poczta</span></a></li>
  75.  
  76. </ul>
  77. </div>
  78.  
  79. <div id="acp">
  80. <div class="panel">
  81. <span class="corners-top"><span></span></span>
  82. <div id="content">
  83. <div id="menu">
  84. <ul>
  85.  
  86. <li id="activemenu"><a href="index.php?mode=overview&sub=intro&language=pl"><span>Wprowadzenie</span></a></li>
  87.  
  88. <li><a href="index.php?mode=overview&sub=license&language=pl"><span>Licencja</span></a></li>
  89.  
  90. <li><a href="index.php?mode=overview&sub=support&language=pl"><span>Wsparcie</span></a></li>
  91.  
  92. </ul>
  93. </div>
  94.  
  95. <div id="main" class="install-body">
  96.  
  97.  
  98. </div>
  99. </div>
  100. <span class="corners-bottom"><span></span></span>
  101. <div class="clear"></div>
  102. </div>
  103. </div>
  104. </div>
  105.  
  106.  
  107. <div id="page-footer">
  108. Powered by YouPhoto.pl ? 2011
  109. </div>
  110. </div>
  111.  
  112. </body>
  113. </html>
  114. LIKE;
  115. } else {
  116. echo 'Nie masz uprawnień administratora';
  117. header('Location: ../index.php');
  118. }
  119. } else {
  120. header('Location: ../index.php');
  121. }
  122. ?>
piotrycjan
Według mnie dzieje się tak:
- logujesz się i dane są zapisywane do sesji
- klikasz na link dla admina, gdzie następuje ponowne wywołanie session_start() i to czyści sesję
- a skoro sesja jest wyczyszczona, to Cię wylogowuje.

Rozwiązanie: spróbuj usunąć ob_start i session_start z pliku index.php dla panelu.
Johnas
jak tak robię to nie gaśnie sesja ale wtedy nie ma sesji w panelu admina i mnie wywala na profil... Jakieś pomysły? nerdsmiley.png
TheSnake
Cytat(piotrycjan @ 28.02.2011, 20:29:19 ) *
Według mnie dzieje się tak:
- logujesz się i dane są zapisywane do sesji
- klikasz na link dla admina, gdzie następuje ponowne wywołanie session_start() i to czyści sesję
- a skoro sesja jest wyczyszczona, to Cię wylogowuje.

Rozwiązanie: spróbuj usunąć ob_start i session_start z pliku index.php dla panelu.

session_start
Johnas
ale ja mam session_start i session_ob i mnie wylogowuje... co robię nie tak? w manualu czytałem ale nie ma nic.

Chyba jedyne wyjście z tego to będzie zrobienie dodatkowego logowania do panelu admina tak jak jest na phpBB3.

a którego jeśli można wiedzieć? Bo patrze na te dwa warunki i nie widzę nic złego...
potreb
Zrób sobie print_r($_SESSION); przed warunkami if, wywal tymczasowo przekierowania wtedy będziesz wiedział co nie tak
Johnas
wynik jest zaskakujący
Kod
Array ( )
<- nie ma nic ale czemu? To mnie ciekawi co_jest.gif

Wiem czemu... Bo wylogowuje a czemu wylogowuje tego się chyba sam nie dowiem

Dobra chyba wiem czemu ale jeszcze nie sprawdzałem w footer.php które jest includowane nie ma session_start() a tam jest odnośnik więc to może tego wina wink.gif sprawdzę i powiem o wyniku wink.gif

Dalej lipa sad.gif
potreb
A może masz gdzies ustawione głupio session_destroy, albo z pliku którego się logujesz coś źle jest ustawione. Pokaż logowanie, bo tak to ciemna magia.
Johnas
Ale sesja działa na profilu, wyszukiwarce dopiero jak się odnosze do folderu admin to gaśnie a odnoszę sie z profilu tylko że profil się tu nie zmieści. Loguje się z pliku index.php
  1. <?php
  2. if ($_POST['logowanie']) { // jeżeli formularz został wysłany, to wykonuje się poniższy skrypt
  3.  
  4.  
  5. $tabela = 'rejestracja'; // zdefiniowanie tabeli MySQL
  6.  
  7. $login = $_POST["login"];
  8. $haslo = $_POST["pass"];
  9.  
  10. $haslo = md5($haslo); // szyfrowanie podanego hasła
  11.  
  12. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  13. login='$login' and haslo='$haslo' and status=0");
  14.  
  15.  
  16. // jeżeli użytkownik zarejestrował się, a nie aktywował swojego konta, to wyświetla się komunikat
  17. if (mysql_num_rows($wynik) == 1) {
  18. $informacja = mysql_fetch_array($wynik);
  19. echo '<span class="blad">'. $_lang['badlogin1'] .'</span>';
  20. }
  21.  
  22. // jeżeli wszystko jest dobrze, użytkownik się loguje
  23. $wynik=mysql_query("UPDATE $tabela SET online=1 WHERE
  24. login='$login' and haslo='$haslo' and status=1");
  25. $wynik=mysql_query("SELECT * FROM $tabela WHERE
  26. login='$login' and haslo='$haslo' and status=1");
  27.  
  28. if (mysql_num_rows($wynik) == 1) {
  29. $informacja = mysql_fetch_array($wynik);
  30. $_SESSION["login"] = $informacja["login"];
  31. $_SESSION["email"] = $informacja["email"];
  32. $_SESSION["imie"] = $informacja["imie"];
  33. $_SESSION["nazwisko"] = $informacja["nazwisko"];
  34. $_SESSION["id"] = $informacja["id"];
  35. $_SESSION["id_rangi"] = $informacja["id_rangi"];
  36. $_SESSION["lang"] = $informacja["lang"];
  37.  
  38. header('Location: profile.php?act=o_mnie ');
  39. } else {
  40. echo '<span class="blad">'. $_lang['badlogin2'] .'</span> ';
  41. }
  42. }
  43.  
  44. ?>
  45. <!-- PANEL LOGOWANIA -->
  46.  
  47. <form action="" method="post">
  48. <input type="hidden" name="logowanie" value="TRUE" />
  49. <div id="logowanie">
  50. <p><?php echo $_lang['login']; ?>: <br><input type="text" name="login" id="acpro_inp0"><br></p>
  51. <p><?php echo $_lang['haslo']; ?>: <br><input type="password" name="pass" id="acpro_inp0"><br></p>
  52. </div>
  53.  
  54. <p><input type="checkbox" name="nazwa" value="wartość" id="acpro_inp0" /> <?php echo $_lang['zapamietaj']; ?>
  55.  
  56. <center><input align="center" class="submit" type="submit" value="<?php echo $_lang['zaloguj']; ?>" /></center>
  57.  
  58. </form>


To jest fragment logowania a fragment wylogowywania w plliku index wygląda tak:
  1. <?php
  2. if ($_GET["wylogowanie"] == "tak") {
  3. $login = $_SESSION['login'];
  4. $idek = $_SESSION['id'];
  5. $wynik=mysql_query("UPDATE rejestracja SET online=0 WHERE id=$idek");
  6. // niszczenie sesji użytkownika
  7. header('Location: index.php'); // przekierwanie na stronę główną
  8. }
  9.  
  10. ?>


Ale bardziej bym powiedział że to serwer zatrzymuje jakoś sesje niż samo kodowanie


Panowie problem rozwiązałem. Pomysłowość rodem z phpbb3. A więc tak zrobiłem:
do php.ini dodałem regółkę:
Kod
session.save_path = tmp

To pozwala zapisać sesje tylko jeszcze nie wiem jak długo te pliki są ważne...
i loguje się najpierw na stronę. jestem zalogowany na stronie przechodzę do folderu admin i muszę potwierdzić logowanie. Po potwierdzeniu mam dwa pliki sesji w tmp. Może komuś się przyda na przyszłość wink.gif
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.