Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zanikanie wartości w sesji
suricat
post
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 7.07.2007

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


Witam,

Mam problem z utrzymaniem wartości zmiennych w sesji.
Kod wygląda następująco:

index.php
  1. <?
  2. $_SESSION['authuser'] = 0; //określa, czy użytkownik jest zalogowany
  3. $nonauth = "";
  4. $reg = "";
  5. $wylogowany = "";
  6. if (($auth = $_GET['auth']) == 'none') $nonauth = "  podałeś błędny login lub hasło";
  7. if (($auth = $_GET['auth']) == 'empty') $nonauth = "  podaj login i hasło";
  8. if (($auth = $_GET['auth']) == 'end') $wylogowany = "wylogowałeś się z serwisu";
  9. if (($regis = $_GET['register']) == 'true') $reg = "  "." rejestracja przebiegła pomyślnie<br>możesz się 
  10. teraz zalogować";
  11. ?>
  12. .
  13. .
  14. <body>
  15. <? 
  16. echo "<p style=color:red;><b>".$nonauth."</b></p>" ;
  17. echo "<p style=color:green;><b>".$reg."</b></p>" ;
  18. $reg = "";
  19. echo "<p style=color:green;><b>".$wylogowany."</b></p>" ;
  20. ?>
  21.  
  22. <form method="post" action="doit.php">
  23. <p>login:
  24. <input type="text" name="user" />
  25. <p>haslo:
  26. <input type="password" name="pass" /></p>
  27. <p><input type="submit" name="submit" value="zaloguj" /></p>
  28. </form>
  29. .
  30. .
  31. </body>


doit.php
  1. <?
  2. $_SESSION['username'] = $user = $_POST['user'];
  3. $pass = $_POST['pass'];
  4. $_SESSION['authuser'] = 0;
  5.  
  6. if ($user == NULL or $pass == NULL) { //sprawdza czy wypełniono pola formularza
  7. header('Location: <a href="http://www.piromant.webd.pl/piromantrum/cms/index.php?auth=empty');" target="_blank">http://www.piromant.webd.pl/piromantrum/cm...th=empty');</a>
  8. exit;
  9.  
  10. }
  11. //sprawdza czy podany login pasuje do hasla z bazy
  12. include ('polaczenie.php');
  13. $zapytanie = "SELECT pass FROM osoby WHERE login ='".$user."'";
  14. $odp = mysql_query($zapytanie);
  15.  
  16. while ($row = mysql_fetch_row($odp)) {
  17. $pass_db = $row[0];
  18. }
  19.  
  20. //sprawdzenie poprawności hasla
  21. if($pass_db == $pass) {
  22. $_SESSION['authuser'] = '1';
  23. header('Location: <a href="http://www.piromant.webd.pl/piromantrum/cms/cms.php');" target="_blank">http://www.piromant.webd.pl/piromantrum/cms/cms.php');</a>
  24. }
  25. else
  26. {
  27. header('Location: <a href="http://www.piromant.webd.pl/piromantrum/cms/index.php?auth=none');" target="_blank">http://www.piromant.webd.pl/piromantrum/cm...uth=none');</a>
  28. exit;
  29. }
  30. ?>


cms.php - i tu jest właśnie problem...
  1. <?
  2. ($_SESSION['authuser'] != 1) {
  3. header('Location: <a href="http://www.piromant.webd.pl/piromantrum/cms/denied.php');" target="_blank">http://www.piromant.webd.pl/piromantrum/cm...nied.php');</a>
  4. exit;
  5. }
  6. ?>


problem występuje przy odwołaniu się do zmiennej sesyjnej $_SESSION['authuser'] z poziomu pliku cms.php .Jeśli gdziekolwiek indziej sprawdzę wartość to jest ona ustawiona (ma przypisaną wartość 0 lub 1, ale zawsze istnieje), natomiast gdy próbuję przyrównać ją w pliku cms.php do innej wartości okazuje się, że $_SESSION['authuser'] == NULL.
Jak to jest możliwe? Przetrzepałem kod na lewo i prawo i nie mam pojęcia.

Co najciekawsze:
Jeśli np: źle się zaloguję, lub nie podam wartości w index.php wszystko zaczyna działać poprawnie...

Jestem bardzo początkujący w temacie php ale zagadnienie wydaje się raczej trywialne sad.gif A może nie, może trzeba użyć jakiegoś polecenia albo coś.

Doradźcie proszę
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
juzwa
post
Post #2





Grupa: Zarejestrowani
Postów: 144
Pomógł: 0
Dołączył: 10.07.2006

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


ja też ekspertem nie jestem ale skoro jest tak jak piszesz to sprawdź

1 -
  1. <?php
  2. if(empty($_SESSION['authuser']))
  3.  echo 'ZMIENNA AUTH USER NIE JEST USTAWIONA';
  4. ?>


jeśli jest takie coś oznacza to, że zmienne sesyjne ustawiasz później niż je czytasz
Go to the top of the page
+Quote Post
suricat
post
Post #3





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 7.07.2007

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


Witam,
Chciałem przypomnieć się z moim pytaniem.
Bardzo zależy mi na odpowiedzi a nadal nie mogę jej znaleźć na własną rękę

Pozdrawiam
Suri
Go to the top of the page
+Quote Post
kossa
post
Post #4





Grupa: Zarejestrowani
Postów: 1 165
Pomógł: 9
Dołączył: 9.04.2002
Skąd: Toruń

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


moim zdaniem plik doit.php nie wykonuje się bo jest nieprawidłowa składnia header()" title="Zobacz w manualu PHP" target="_manual header przekierowuje a nie możesz z tego robić linka i jeszcze dodawać atrybuty typu target

Cytat
header('Location: <a href=\"http://www.piromant.webd.pl/piromantrum/cms/index.php?auth=empty');" target=\"_blank\">http://www.piromant.webd.pl/piromantrum/cm...th=empty');</a>
exit;


popraw to a wtedy zobaczysz co dalej

Łukasz


--------------------
Go to the top of the page
+Quote Post
suricat
post
Post #5





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 7.07.2007

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


Witam,

Dzięki za odpowiedź, ale teraz to ja już nic z tego nie rozumiem. U mnie w kodzie nie ma czegoś takiego
Dokładnie jest:

if ($user == NULL or $pass == NULL) {
header('Location: http://www.piromant.webd.pl/piromantrum/cm...th=empty');
exit;


Nie wiem dlaczego gdy wkleiłem kod do posta to tak się porobiło. Nie zauważyłem tego wcześniej
Go to the top of the page
+Quote Post
Roguś
post
Post #6





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 14.12.2006
Skąd: Częstochowa

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


Ktoś mi kiedyś mówił ze header resetuje sesje.... I ze nie da sie tego razem używać. Miałem podobny problem, wywaliłem header i jest ok


--------------------
http://www.twojanutka.pl Twoja Nutka - Moja pierwsza stronka
Go to the top of the page
+Quote Post
PiratNowegoPokol...
post
Post #7





Grupa: Zarejestrowani
Postów: 132
Pomógł: 0
Dołączył: 12.10.2006

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


zgubi SID jeśli jest wysyłany metodą GET...
jak przesłać SID za pomocą nagłówka ... nie mam pojęcia
Go to the top of the page
+Quote Post

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: 21.08.2025 - 11:04