Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Sesje
Forum PHP.pl > Forum > Przedszkole
Reptile ReX
Próbuję pojąć sesje, przeczytałem parę poradników, ale nadal nie rozumiem.

Napisałem pewien kodzik na logowanie, ale nie działa:

(Mianowicie, po wywołaniu skryptu, jestem od razu zalogowany, nie mogę się wylogować ani nic, tak jakby zmienna sesyjna była inna niż 0, proszę o pomoc lub nakierunkowanie mnie w jakiś sposócool.gif - PS. Cookies itd czyściłem.

  1. <?php
  2. if(!isset($_SESSION['login'])) {
  3. $_SESSION['login'] = 0;
  4. } else {
  5.  
  6.  
  7. if ($_SESSION['login'] = 0) {
  8. echo ("<center><form action='' method='post'>");
  9. echo ("Nazwa: <input type=\"text\" class=\"input\" name=\"nick\" size=\"25\" /><br />");
  10. echo ("Hasło:   <input type=\"password\" name=\"X09261x\" class=\"input\" size=\"25\" /><br /><br />");
  11. echo ("<input type=\"submit\" value=\"Zaloguj Mnie !\" name=\"logme\" class=\"submit\" />");
  12. echo ("</form></center>");
  13.  
  14. if (md5($_POST['nick']) == md5('ReptileReX') && md5($_POST['X09261x']) == md5('tnujf8tf')) {
  15. $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
  16. $_SESSION['id'] = md5('ReptileReX');
  17. header('Location: index.php');
  18. die();
  19. }
  20.  
  21. } else {
  22. if ($_SESSION['ip'] = $_SERVER['REMOTE_ADDR']) {
  23. if ($_SESSION['id'] = md5('ReptileReX')) {
  24. $NazwaPliku = "xxx/xxx.txt";
  25. $Otworz = fopen($NazwaPliku,"r");
  26. $Odczyt = fread($Otworz,filesize($NazwaPliku));
  27. echo("<br /><center><form action='downloads/xxx.exe'><input type='submit' value='--->>> Pobierz Serwer <<<---' class='submit' /></form></center>");
  28. echo("<br /><center><form action='delete.php'><input type='submit' value='--->>> Skasuj Logi <<<---' class='submit' /></form></center>");
  29. echo("<br /><center><a href='?logout=yes'>--->>> Wyloguj Się <<<---</a></center>");
  30. echo("<br /><br />".nl2br($Odczyt)."<br />");
  31.  
  32. if ($_GET['logout'] == 'yes') {
  33.  
  34. header('Location: index.php');
  35.  
  36. die();
  37. }
  38.  
  39.  
  40. } else {
  41.  
  42. Echo("Próba przejęcia sesji");
  43. }
  44.  
  45. } else {
  46.  
  47. Echo("Próba przejęcia sesji");
  48. }
  49.  
  50. }
  51. }
  52. ?>
  53.  
zimnydave
Nie wiem czy Ci to pomoże, ale na pewno nakieruje cie w jakiś sposób:
oczywiście przykład bardzo prosty.

kod obsługujący formularz logowania (name=login, haslo) - pisane z ręki- mogą być jakieś błędy - requirowany plik polacz.php (wiadomo z połączeniem z bazą danych ;])

  1.  
  2.  
  3. if(isset($_POST['uzytkownik']) && isset($_POST['haslo'])){
  4. require('./skrypty/polacz.php');
  5.  
  6. $uzytkownik=$_POST['uzytkownik'];
  7. $sha1_haslo=sha1($_POST['haslo']);
  8.  
  9. $zapytanie="SELECT login FROM userzy WHERE login='".$uzytkownik."'";
  10. if(mysql_num_rows(mysql_query($zapytanie))){
  11. $zapytanie="SELECT haslo FROM userzy WHERE login='".$uzytkownik."'";
  12. $sql=mysql_query($zapytanie);
  13. $dane=mysql_fetch_array($sql);
  14. if($sha1_haslo==$dane['haslo']){
  15. $zapytanie="SELECT dostep FROM userzy WHERE login='".$uzytkownik."'";
  16. $sql=mysql_query($zapytanie);
  17. $dane=mysql_fetch_array($sql);
  18. $_SESSION['dostep']=$dane['dostep'];
  19. $_SESSION['login']=$uzytkownik;
  20. header("Location: ./main.php");
  21. }else{
  22. header("Location: blad_hasla.php");
  23. }
  24. }else{
  25. header("Location: blad_hasla.php");
  26. }
  27. }


a tutaj formularz logowania (gdy zmienna sesyjna nie zarejestrowana) wysietlanie witaj $uzytkownik (gdy zarejestrowana) requirowany plik logowanie.php (to ten wyzej) ;]

  1. require('logowanie.php');
  2. if(isset($_SESSION['login'])){
  3. <table style='float:right; position:relative; top:9px; margin-bottom:8px;' >
  4. <tr>
  5.  
  6. <td id='log_info'>
  7. Witaj ".$_SESSION['login']."! Jesteś zalogowany
  8. <td/>
  9. <td>
  10. <a href='./index.php'><img src='./images/wyloguj.png' /></a>
  11. </td></tr>
  12. </table>";
  13. }else{
  14. <form class='loguj_sie' action='./logowanie.php' method='post'>
  15.  
  16. <input type='image' src='./images/logowanie/ok.png' style='float:right; height:30px;' tabindex='3' />
  17. <input type='password' id='haslo' value='Hasło' name='haslo' style='float:right; height:30px;' tabindex='2' />
  18. <input type='text' id='login' value='Login' name='uzytkownik' style='float:right; height:30px;' tabindex='1'/>
  19. </form>
  20. <div style='float:right; height:30px; position:relative; top:3px; right:25px;'>
  21. <img src='./images/logowanie/zaloguj_sie.png' class='loguj_sie' id='loguj_sie'/></div>";
  22. }


Pozdrawiam
sadistic_son
Masz błąd w warunku logicznym w linii 7. Powinno być:
  1. if($_SESSION['login'] == 0) {

Poza tym pamiętaj , że na początku każdego pliku, który korzysta z sesji powinno być session_start.
A do wylogowywania oprócz tego co masz poleciłbym jeszcze to:
  1. unset($_SESSION);
  2. //oraz dla pewnosci
Oprócz tego namieszane masz z nagłówkami. Powinny zawsze być jako pierwsza rzecz, zanim cokolwiek wyświetlisz w htmlu. A u Ciebie najpierw jest formularz a potem dopiero header('Location: index.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.