Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Wylogowywanie
Forum PHP.pl > Forum > Przedszkole
WebspyPL
Witam!
Mam problem z wylogowywaniem się ze strony.

logowanie.php wygląda tak
Kod
<?php
ob_start();
session_start(); // rozpoczęcie sesji
?>

<?php include('header.php'); ?>
<div class="content">

<?
include('inc/db.php');
session_start(); //sesje, do logowania
ob_start();  //emulacja headerow


$login = isset($_SESSION['login']) ? $_SESSION['login'] : mysql_escape_string($_POST['login']);  //filtracja zmiennej
$haslo = mysql_escape_string(md5($_POST['pass'])); //filtracja + haszowanie hasla

$zapytanie = mysql_query("SELECT * FROM rejestracja WHERE login = '$login'");  //pobranie rekordow

$dane = mysql_fetch_array($zapytanie);

/* sprawdzamy poprawnosc przeslanych danych */  

if(isset($_POST['login']) && isset($_POST['pass'])) {
if($login ==''.$dane['login'].'' && $haslo ==''.$dane['haslo'].'')
{
        
        $_SESSION['admin']='ok';  //sesja przyjmuje wartosc 'ok' gdy dane z formularza zgadzaja sie z danymi z bazy
        $_SESSION['login']=''.$dane['login'].'';

  setcookie("log" , "log", time()+3600, "/","", 0);  //tworzymy ciastko
  header("Location: index.php"); //przenosimy na strone

}
else { echo 'Logowanie nie powiodło się.'; }  //w przypadku zlych danych
}



if(!isset($_SESSION['admin']) && !isset($_SESSION['login']) && $_SESSION['admin'] != 'ok' && !isset($_POST['submit']) && $_GET['p']!='wyloguj' && !isset($_COOKIE['log']))

{
echo'
<center><h3>Zaloguj się</h3>
<form action="logowanie.php" method="POST">
Login:<input type="text" name="login"><br/>
Hasło:<input type="password" name="pass"><br/>
<input type="submit" name="submit" value="Zaloguj się"></form></center>';


}

if($_SESSION['admin'] == 'ok' && isset($_COOKIE['log']))  //warunek, ktory sprawdza czy sesja ma odpowiednia wartosc oraz czy istnieje ciastko, jest to koniunkcja, wiec bedzie prawdziwa jesli oba warunki zostana spelnione
{


echo 'Jesteś zalgowany jako '.$_SESSION['login'].', <a href="?p=wyloguj">Wyloguj się</a>';

if($_GET['p']=='wyloguj') {



session_destroy(); //kasujemy sesje
setcookie("log" , "log", time()-3600, "/","", 0);  //kasujemy cookies

header("Location: logowanie.php");  //przenosimy na strone logowania

echo 'Zostałeś pomyślnie wylogowany.';

}



}

?>


</div>
<?php include('stopka.php'); ?>


www.nazwaStrony.pl/logowanie.php - logowanie działa prawidłowo.
www.nazwaStrony.pl/logowanie.php?p=wyloguj - przenosi mnie na stronę logowanie.php?p=wyloguj, która jest pusta i nie wylogowywuje.

W czym tkwi problem?
kadlub
<a href="?p=wyloguj">Wyloguj się</a>';
ten kawałek przenosi cię na tą samą stronę na której jesteś
daj
<a href="nazwa_strony?p=wyloguj">Wyloguj się</a>'; gdzie nazwa strony to strona na którą ma przenieść po wylogowaniu i tam daj ten fragment z niszczeniem sesji
i nic dziwnego że strona jest pusta masz na niej tylko formularz który jest w warunku a ten z kolei po wylogowaniu nie jest spełniony więc nic nie wyświetli
WebspyPL
logowanie.php
  1. <?php
  2. session_start(); // rozpoczęcie sesji
  3. ?>
  4.  
  5. <?php include('header.php'); ?>
  6. <div class="content">
  7.  
  8. <?
  9. include('inc/db.php');
  10. session_start(); //sesje, do logowania
  11. ob_start(); //emulacja headerow
  12.  
  13.  
  14. $login = isset($_SESSION['login']) ? $_SESSION['login'] : mysql_escape_string($_POST['login']); //filtracja zmiennej
  15. $haslo = mysql_escape_string(md5($_POST['pass'])); //filtracja + haszowanie hasla
  16.  
  17. $zapytanie = mysql_query("SELECT * FROM rejestracja WHERE login = '$login'"); //pobranie rekordow
  18.  
  19. $dane = mysql_fetch_array($zapytanie);
  20.  
  21. /* sprawdzamy poprawnosc przeslanych danych */
  22.  
  23. if(isset($_POST['login']) && isset($_POST['pass'])) {
  24. if($login ==''.$dane['login'].'' && $haslo ==''.$dane['haslo'].'')
  25. {
  26.  
  27. $_SESSION['admin']='ok'; //sesja przyjmuje wartosc 'ok' gdy dane z formularza zgadzaja sie z danymi z bazy
  28. $_SESSION['login']=''.$dane['login'].'';
  29.  
  30. setcookie("log" , "log", time()+3600, "/","", 0); //tworzymy ciastko
  31. header("Location: index.php"); //przenosimy na strone
  32.  
  33. }
  34. else { echo 'Logowanie nie powiodło się.'; } //w przypadku zlych danych
  35. }
  36.  
  37.  
  38.  
  39. if(!isset($_SESSION['admin']) && !isset($_SESSION['login']) && $_SESSION['admin'] != 'ok' && !isset($_POST['submit']) && $_GET['p']!='wyloguj' && !isset($_COOKIE['log']))
  40.  
  41. {
  42. <center><h3>Zaloguj się</h3>
  43. <form action="logowanie.php" method="POST">
  44. Login:<input type="text" name="login"><br/>
  45. Hasło:<input type="password" name="pass"><br/>
  46. <input type="submit" name="submit" value="Zaloguj się"></form></center>';
  47.  
  48.  
  49. }
  50.  
  51. if($_SESSION['admin'] == 'ok' && isset($_COOKIE['log'])) //warunek, ktory sprawdza czy sesja ma odpowiednia wartosc oraz czy istnieje ciastko, jest to koniunkcja, wiec bedzie prawdziwa jesli oba warunki zostana spelnione
  52. {
  53.  
  54.  
  55. echo 'Jesteś zalgowany jako '.$_SESSION['login'].', <a href="wyloguj.php">Wyloguj się</a>';
  56.  
  57.  
  58. }
  59.  
  60. ?>
  61.  
  62.  
  63. </div>
  64. <?php include('stopka.php'); ?>


wyloguj.php
  1. <?php
  2. session_start(); // rozpoczęcie sesji
  3. ?>
  4.  
  5. <?php include('header.php'); ?>
  6. <div class="content">
  7.  
  8. <?
  9. if($_GET['p']=='wyloguj') {
  10.  
  11.  
  12.  
  13. session_destroy(); //kasujemy sesje
  14. setcookie("log" , "log", time()-3600, "/","", 0); //kasujemy cookies
  15.  
  16. header("Location: logowanie.php"); //przenosimy na strone logowania
  17.  
  18. echo 'Zostałeś pomyślnie wylogowany.';
  19.  
  20. }
  21.  
  22. ?>
  23.  
  24.  
  25. </div>
  26. <?php include('stopka.php'); ?>


Nic to nie dało. :/
kadlub
nie to miałeś zrobić
  1. <?php
  2. session_start(); // rozpoczęcie sesji
  3. ?>
  4.  
  5. <?php include('header.php'); ?>
  6. <div class="content">
  7.  
  8. <?
  9. include('inc/db.php');
  10. session_start(); //sesje, do logowania
  11. ob_start(); //emulacja headerow
  12.  
  13.  
  14. $login = isset($_SESSION['login']) ? $_SESSION['login'] : mysql_escape_string($_POST['login']); //filtracja zmiennej
  15. $haslo = mysql_escape_string(md5($_POST['pass'])); //filtracja + haszowanie hasla
  16.  
  17. $zapytanie = mysql_query("SELECT * FROM rejestracja WHERE login = '$login'"); //pobranie rekordow
  18.  
  19. $dane = mysql_fetch_array($zapytanie);
  20.  
  21. /* sprawdzamy poprawnosc przeslanych danych */
  22.  
  23. if(isset($_POST['login']) && isset($_POST['pass'])) {
  24. if($login ==''.$dane['login'].'' && $haslo ==''.$dane['haslo'].'')
  25. {
  26.  
  27. $_SESSION['admin']='ok'; //sesja przyjmuje wartosc 'ok' gdy dane z formularza zgadzaja sie z danymi z bazy
  28. $_SESSION['login']=''.$dane['login'].'';
  29.  
  30. setcookie("log" , "log", time()+3600, "/","", 0); //tworzymy ciastko
  31. header("Location: index.php"); //przenosimy na strone
  32.  
  33. }
  34. else { echo 'Logowanie nie powiodło się.'; } //w przypadku zlych danych
  35. }
  36.  
  37.  
  38.  
  39. if(!isset($_SESSION['admin']) && !isset($_SESSION['login']) && $_SESSION['admin'] != 'ok' && !isset($_POST['submit']) && $_GET['p']!='wyloguj' && !isset($_COOKIE['log']))
  40.  
  41. {
  42. <center><h3>Zaloguj się</h3>
  43. <form action="logowanie.php" method="POST">
  44. Login:<input type="text" name="login"><br/>
  45. Hasło:<input type="password" name="pass"><br/>
  46. <input type="submit" name="submit" value="Zaloguj się"></form></center>';
  47.  
  48.  
  49. }
  50.  
  51. if($_SESSION['admin'] == 'ok' && isset($_COOKIE['log'])) //warunek, ktory sprawdza czy sesja ma odpowiednia wartosc oraz czy istnieje ciastko, jest to koniunkcja, wiec bedzie prawdziwa jesli oba warunki zostana spelnione
  52. {
  53.  
  54.  
  55. echo 'Jesteś zalgowany jako '.$_SESSION['login'].', <a href="?p=wyloguj">Wyloguj się</a>';
  56. }
  57. if($_GET['p']=='wyloguj') {
  58.  
  59. <center><h3>Zaloguj się</h3>
  60. <form action="logowanie.php" method="POST">
  61. Login:<input type="text" name="login"><br/>
  62. Hasło:<input type="password" name="pass"><br/>
  63. <input type="submit" name="submit" value="Zaloguj się"></form></center>';
  64.  
  65. session_destroy(); //kasujemy sesje
  66. setcookie("log" , "log", time()-3600, "/","", 0); //kasujemy cookies
  67.  
  68. header("Location: logowanie.php"); //przenosimy na strone logowania
  69.  
  70. echo 'Zostałeś pomyślnie wylogowany.';
  71.  
  72. }
  73.  
  74.  
  75.  
  76.  
  77.  
  78. ?>
  79.  
  80.  
  81. </div>
  82. <?php include('stopka.php'); ?>


zobacz czy zadziała
WebspyPL
Wszystko jest ok dzięki wielkie.
Temat do zamknięcia.
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.