Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Logowanie
Forum PHP.pl > Forum > Przedszkole
Compiler
Witam,
Mam kod w index.php:
  1.  
  2. if (isset($_POST['logout']) && (int)$_POST['logout'] == 1)
  3. {
  4. //unset($_SESSION['user']);
  5. }
  6. if ( isset( $_SESSION['user'] ))
  7. { ?>
  8. zawartosc strony dostepna po zalogowaniu
  9. <?
  10. }
  11. ?>

oraz
  1. <?php
  2. <form method="post" action="index.php">
  3. <input type="hidden" name="logout" value="1" class=input>
  4. <input class="input" type="submit" name="submit" value="Wyloguj">
  5. </form>
  6.  
  7. <form method="post" action="index.php">
  8. <input type="hidden" name="logout" value="0" class=input>
  9. Login: <input type="text" name="login" size="15" class="input"> <br>
  10. Hasło: <input type="password" name="pass" size="15" class="input">  <br>
  11. <input class="input" type="submit" name="submit" value="Zaloguj">
  12. </form>
  13. ?>



Logowanie jest OK tylko nie działa wylogowywanie sad.gif
Gdy się zaloguje, nie wyświetla się zawartosc strony dostepna po zalogowaniu a gdy zakomentuje linijki:
  1. <?php
  2. ?>

to zawsze jestem zalogowany (wtedy oczywiście wyświetla się zawartosc strony dostepna po zalogowaniu ) sad.gif

Jak to poprawić?
marcio
Cytat
<form method="post" action="index.php">
<input type="hidden" name="logout" value="1" class=input>
<input class="input" type="submit" name="submit" value="Wyloguj">
</form>

Zamien na:
Cytat
<form method="post" action="index.php">
<input class="input" type="submit" name="logout" value="Wyloguj">
</form>

I potem:
  1. <?php
  2. if(isset($_POST['logout'])) {
  3.  
  4. unset($_SESSION['user']);
  5. header("Location:".$_SERVER['PHP_SELF']);
  6.  
  7. }
  8. ?>

Na poczatku pliku daj ob_start() w razie czego i powinno dzialac cos w ten desen.
Compiler
Niestety nie działa.
vokiel
  1. <?php
  2. if (!empty($_POST['logout'])){
  3.    // wylogowanie
  4.    unset($_SESSION); // czasem i tak trzeba, ale raczej wystarczy poniższe
  5.    header("location: http://".$_SERVER['HTTP_HOST']."");
  6.    exit;
  7. }else if (isset($_SESSION['user']) && !empty($_SESSION['user'])){
  8.    // po zalogowaniu pokauzjesz co chcesz
  9. }
  10. ?>
Compiler
Także nie działa sad.gif
Ten sam efekt jakbym był ciągle wylogowany.
erix
A nie możesz wylogowania przekazywać przez GET...?

I IMHO nie ma sensu dawać session_destroy" title="Zobacz w manualu PHP" target="_manual, lepiej:
  1. <?php
  2. $_SESSION = array();
  3. ?>



Cytat
Niestety nie działa.

A jakieś konkrety?
Compiler
Konkrety są wyżej i chyba innych nie mam smile.gif
Ogólnie to trochę zamotany kod smile.gif
Logowanie mam w oddzielnym pliku i wstawiony do index.php jako include
Oto kod logowania:
  1. if ( isset( $_POST['login'] ))
  2. {
  3. $pass = $_POST['pass'];
  4. $pass2 = sha1(md5($pass));
  5.  
  6. $query = mysql_query("SELECT * FROM user WHERE name='{$_POST['login']}' AND pass='{$pass2}'");
  7.  
  8. $result = mysql_fetch_array($query);
  9. if (mysql_num_rows($query) !== 0) {
  10. $_SESSION['user'] = $_POST['login'];
  11. $login= $_POST['login']  ;
  12. echo "$login ";
  13. ?>
  14. <br>
  15. zalogowany  <br>:)<br><br><br><br><br>
  16.  
  17. <form method="post" action="index.php">
  18. <input type="hidden" name="refresh" value="1" class=input>
  19. <input type="hidden" name="logout" value="1" class=input>
  20. <input class="input" type="submit" name="submit" value="Wyloguj">
  21. </form>
  22. <?
  23. //exit();
  24. }
  25. else {
  26.  
  27. ?>
  28. <form method="post" action="index.php">
  29. <input type="hidden" name="logout" value="0" class=input>
  30. Login: <input type="text" name="login" size="15" class="input"> <br>
  31. Hasło: <input type="password" name="pass" size="15" class="input">  <br>
  32. <input class="input" type="submit" name="submit" value="Zaloguj">
  33. </form>
  34. <?
  35.  
  36. echo 'Błędny login lub hasło!';
  37.  
  38. }
  39.  
  40. }
  41. else{
  42.  
  43. ?>
  44. <form method="post" action="index.php">
  45. <input type="hidden" name="logout" value="0" class=input>
  46. Login: <input type="text" name="login" size="15" class="input"> <br>
  47. Hasło: <input type="password" name="pass" size="15" class="input">  <br>
  48. <input class="input" type="submit" name="submit" value="Zaloguj">
  49. </form>
  50.  
  51. <? } ?>


Reszta jest w powyższych postach więc nie będę dublował smile.gif
Po zalogowaniu nie wchodzi w ten if :
  1. <?php
  2. if (isset($_SESSION['user']) && !empty($_SESSION['user']))
  3. ?>

Czyli wnioskując, nie jestem zalogowany, ale w powyższym kodzie robię $_SESSION['user'] = $_POST['login']; więc jestem zalogowany. Tak?
nieraczek
A robisz: session_start() questionmark.gif
Compiler
Tak robię, w pliku index.php. W drugim nie muszę, bo jest dołączony do index jako include (chyba), na wszelki wypadek dodałem i jest jak było czyli źle smile.gif
ArekJ
  1. <?php
  2. if (isset($_SESSION['user']) && !empty($_SESSION['user']))
  3. ?>

A daj:
  1. <?php
  2. if (isset($_SESSION['user']) && $_SESSION['user'] != '')
  3. ?>
erix
Cytat
Konkrety są wyżej i chyba innych nie mam

Pytałem o pierwszego posta z nie działa, a nie następnego. winksmiley.jpg Nie napisałeś, że się dzieje to samo.

Co do tematu:
  1. <?php
  2. if ( isset( $_POST['login'] ))
  3. {
  4. ?>

Z tego, co masz w powyższym warunku wynika, że w celu obejrzenia chronionej strony musisz się każdorazowo logować:

  1. <?php
  2. $query = mysql_query("SELECT * FROM user WHERE name='{$_POST['login']}' AND pass='{$pass2}'");
  3.  
  4. $result = mysql_fetch_array($query);
  5. if (mysql_num_rows($query) !== 0) {
  6. $_SESSION['user'] = $_POST['login'];
  7. $login= $_POST['login']  ;
  8. echo "$login ";
  9. ?>

W tym listingu ustawiasz zmienną sesyjną, ale do sprawdzania jej już nie wykorzystujesz. No chyba, że problem tkwi w innym listingu.
Compiler
Sam już nie wiem jak to powinno być smile.gif
Poszukam innych przykładów tongue.gif może któryś zadziała biggrin.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.