Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] zmieene superglobalne (sessja)
Forum PHP.pl > Forum > Przedszkole
gebp
Mam taki maly problem ale od początku. Mam dwa pliki (kod poniżej). Do index2.php loguje sie z z trony index.html (dane przesyłam postem). W pliku dsklepy.php wprowadzam dane itd. Ale nie o to chodzi. W index2.php sprawdzam czy $_SESSION[] zostały wprowadzone i czy zgadzają się z tymi w bazie. Ja nie to wywala mnie do logowania. Dalej. Jeżeli przejde do dsklepy.php też wszystko jest OK. Problemy zaczynają sie w momencie gdy chcę przejść do index2.php. Wynikiem tego działana jest że wywala mnie do logowania. Tak jakby gubił zmienne superglobalne. Dlaczego questionmark.gif?
Mam jeszcze pytanie kolejne, a mianowicie w lini 17 w pliku dsklepy.php jak dam
header('location: index2.php') to wywala mi błąd (oczywiście jeżeli nie zaloguje sie jako Admin).

Index2.php
  1. <?php
  2. $_SESSION['user'] = $_POST['login'];
  3. $_SESSION['pass'] = $_POST['pass'];
  4. $_SESSION['autuser']=0;
  5. $l=$_POST['login'];
  6. mysql_connect("localhost","root","");
  7. $s1 = "SELECT ID, nazwa, pass FROM sklepy WHERE nazwa like '$l'";
  8. $w= mysql_query($s1);
  9. $pnazwa= $w1['nazwa'];
  10. $ppass=$w1['pass'];
  11. $pID=$w1['ID'];
  12. //testy
  13. //echo $_SESSION['user'];
  14. //echo("<BR>");
  15. //echo $_SESSION['pass'];
  16. //echo("<BR>");
  17. //echo $_SESSION['autuser'];
  18. //echo("<BR>");
  19. //echo $ppass;
  20. //echo("<BR>");
  21. //echo $pID;
  22. //echo("<BR>");
  23.  
  24. //jeżeli zmienne super globalne nie są ustawione to żegnaj
  25. if ( (!isset($_SESSION['user'])) AND (!isset($_SESSION['pass'])) )
  26. { header("location: index.html");
  27. exit();}
  28.  
  29. //czy user podał prawidłowe dane
  30. if(($_SESSION['user'] === $pnazwa) AND ($_SESSION['pass'] === $ppass) )
  31.  {$_SESSION['autuser']=1;
  32.  echo ("Zalogowany:".$_SESSION['user']."<BR>");
  33. }
  34.  else {
  35.  echo ('
  36.  <TABLE>
  37.  <TR><TD>Niepoprawny login i hasło --> ACESS DENIDED</TD></TR>
  38.  <TR><TD><a href="index.html"> LOGOWANIE </a></TD></TR>
  39. </TABLE></BR>');
  40.  exit();}
  41. ?>
  42. <HTML>
  43. <a href="logout.php">WYLOGOWANIE.</a><BR>
  44. <a href="ph.php">Zmiana hasła.</a><BR>
  45. <a href="dsklepy.php">Dodanie Sklepów.</a><BR>
  46. </HTML>


dsklepy.php
  1. <?php
  2. echo "Zalogowany:".$_SESSION['user']."<br>"; //kto zalogowany
  3. $ip = getenv ("REMOTE_ADDR"); //adres IP
  4. $p=$_SESSION['user'];
  5.  mysql_connect("localhost","root","");
  6. $z1= "SELECT ID FROM sklepy WHERE nazwa like '$p'";
  7. $w= mysql_query($z1);
  8. $pID=$w1['ID'];
  9. $pnazwa=$w1['nazwa'];
  10.  
  11. //sprawdzenie czy bylo logowanie
  12. if ( (!isset($_SESSION['user'])) AND (!isset($_SESSION['pass'])) )
  13. { echo('<a href=index.html> MAIN PAGE </a>');
  14. exit();}
  15.  
  16. //sprawdzenie czy admin; jezeli ID =0
  17. if(($pID == 0) AND ($_SESSION['autuser'] == 1))
  18. {
  19. echo ("Witaj adminie <BR>");
  20. }
  21. else {
  22. echo "<Table>
  23. <TR>Wykryto i przesłano próbę wejścia z adresu:</TR>\n".$ip.
  24. "<BR><TR><html><a href=index2.php> MAIN PAGE </a></html></TR>
  25. </Table>";
  26. exit();}
  27. echo $_SESSION['user'];
  28. echo("<BR>");
  29. echo $_SESSION['pass'];
  30. echo("<BR>");
  31. echo $_SESSION['autuser'];
  32. echo("<BR>");
  33.  
  34. ?>
  35. <html>
  36. <FORM ACTION="dsklepy1.php" method="post">
  37. <TABLE>
  38. <TR><TD> NAZWA: </TD>
  39. <TD><INPUT type="TEXT" name="nazwa" > </TD></TR>
  40. <TR><TD> HASŁO: </TD>
  41. <TD><INPUT type="TEXT" name="pass" ></TD></TR>
  42. <TR><TD></TD><TD><INPUT type="SUBMIT" VALUE="zapisz"></TD></TR>
  43. </TABLE>
  44. </FORM>
  45. <BR>
  46. <BR>
  47. <a href="index2.php"> Strona główna </a>
  48. </html>
Dowhook
W Index2.php zmień:
  1. <?php
  2. $_SESSION['user'] = $_POST['login'];
  3. $_SESSION['pass'] = $_POST['pass'];
  4. ?>

na:
  1. <?php
  2. if (empty($_SESSION['user'])) { $_SESSION['user'] = $_POST['login']; }
  3. if (empty($_SESSION['pass'])) { $_SESSION['pass'] = $_POST['pass']; }
  4. ?>
anopak
Cytat(gebp @ 2006-05-04 06:34:35)
Mam jeszcze pytanie kolejne, a mianowicie w lini 17 w pliku dsklepy.php jak dam
header('location: index2.php') to wywala mi błąd (oczywiście jeżeli nie zaloguje sie jako Admin).


prawdopodobnie masz już gdzieś wysłane jakieś dane do pliku, dlatego header nie może być ustawiony poprawnie. Spróbuj pousuwać puste spacje i entery z początku pliku i sprawdź, czy nie masz gdzieś echa....
gebp
Cytat(Dowhook @ 2006-05-04 06:49:56)
W Index2.php zmień:
  1. <?php
  2. $_SESSION['user'] = $_POST['login'];
  3. $_SESSION['pass'] = $_POST['pass'];
  4. ?>

na:
  1. <?php
  2. if (empty($_SESSION['user'])) { $_SESSION['user'] = $_POST['login']; }
  3. if (empty($_SESSION['pass'])) { $_SESSION['pass'] = $_POST['pass']; }
  4. ?>

Niestety. Nie pomogło a wręcz zaszkodziło. Teraz po wylogowani wogóle nie mogę sie zalogować na żadnym z loginów.
  1. <?php
  2.  
  3. //jeżeli zmienne super globalne nie są ustawione to żegnaj
  4. if ( (!isset($_SESSION['user'])) AND (!isset($_SESSION['pass'])) )
  5. { header("location: index.html");
  6. exit();}
  7.  
  8. ?>

Powyższą część stosowałem aby nie można było bezpośrednio wejśc na index2.php. Problem jednak dalej istnieje. Jeżeli z ixdex2.php wejde na dsklepy.php i wruce linkiem
  1. a href="index2.php"> Strona główna </a>

to wywala mnie do logowania tak jaby $_SESSION['user'] i $_SESSION['pass'] zgineły/zostały skasowane/ przepadły/ wciąglo je*
*Niepotrzebne skreślić.
I to jest najbardziej wkurzające. Dlaczego tak sie dzieje? Przecież w dsklepy.php nie ma instrukcji "session_destroy()" jest ona tylko w logout.php
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.