Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Logowanie coś nie tak
Forum PHP.pl > Forum > Przedszkole
Wieczny
Witam, mam problem nie działa logowanie mianowicie sam nie wiem co jest grane kombinowałem i tylko gorzej zrobiłem ... To jest fragment kodu odpowiedzialnego za logowanie w PHP

  1. <?php
  2. $result = mysql_query("SELECT user_id, user_login
  3.                         FROM users
  4.                         WHERE user_login='".($_POST['login'])."'");
  5.                      
  6.       $row = mysql_fetch_array($result);
  7.  
  8.  $login = $_SESSION['user_login'] = mysql_real_escape_string($row['user_login']);
  9.  
  10. if($_GET["wyloguj"]=="tak"){$_SESSION["zalogowany"]=0;echo "Zostałeť wylogowany z serwisu";}
  11.  if($_SESSION["zalogowany"]!=1){
  12.     if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
  13.        if(mysql_num_rows(mysql_query("select * from users where user_login = '".$_POST["login"]."' AND user_haslo = '".$_POST["haslo"]."'"))){
  14.            echo "Zalogowano poprawnie.";
  15.            $online_user = $_SESSION["zalogowany"]=1;
  16.            }
  17.        else echo ("Podano złe dane!!!");
  18.        }
  19.  
  20.    
  21. }
  22. else
  23.  
  24.  $now = time();
  25.  
  26. if (!isset($_SESSION['start']))
  27.  {
  28.   $_SESSION['start'] = $now;
  29.  }
  30.   elseif ($_SESSION['start'] < $now - 3600)
  31.    {
  32.     session_destroy();
  33.      echo "Czas(10s) sesji minąl. <a href='login.php'>Zaloguj się ponownie</a>";
  34.    }
  35. ?>


a to fragment kodu w SMARTY

  1. {if $online_user neq NULL}
  2. Zostales zalogowany jako {$user_login}
  3.  
  4. {else}
  5. <div style='padding: 11px;'>
  6.  
  7. <form action='index22.php' method=post>
  8. Login: <input size='8' class='input' type=text name=login> <a link href=''> Zarejestruj sie</a> <br>
  9. Haslo: <input size='8' class='input' type=password name=haslo>
  10. <input type='hidden' name='zalogowany' value='1' class='input'>
  11. <input type='image' src='templates/img/login.jpg' value='submit' onfocus='blur()' />
  12.  
  13.  
  14. </form>
  15. </div>
  16. {/if}


Pomoże ktoś ?!
mecenas
zanim zacznę czytać kod - jakie są "objawy" tegoż niedziałania?
Wieczny
po prostu nie ma zadnego komunikatu zwyczajnie nie loguje ...
mecenas
Spróbuj tak:
  1. <?php
  2. if(!empty($_POST["login"]) && !empty($_POST["haslo"])){
  3.        if(mysql_num_rows(mysql_query("select * from users where user_login = '".$_POST["login"]."' AND user_haslo = '".$_POST["haslo"]."' LIMIT 1"))>0){
  4.            echo "Zalogowano poprawnie.";
  5.            $_SESSION["zalogowany"]=1;
  6.           $online_user = $_SESSION["zalogowany"];
  7.            }
  8. ?>


LIMIT 1 daje chociaż minimalnie bardziej optymalne zapytanie, natomiast o ile się nie mylę mysql_num_rows zwraca inta...

Wogóle straszne śmieci masz w tym kodzie... Ale musisz mi wybaczyć jeśli się mylę smile.gif nigdy nie tykałem smartów smile.gif
Czy smarty dbają o zapobieganie sql injection? Jeśli nie, powinieneś o tym pamiętać.
potreb
  1. {if $online_user neq NULL}
  2. Zostales zalogowany jako {$user_login}
  3. {/if}
  4. {else}
  5. <div style='padding: 11px;'>
  6.  
  7. <form action='index22.php' method=post>
  8. Login: <input size='8' class='input' type=text name=login> <a link href=''> Zarejestruj sie</a> <br>
  9. Haslo: <input size='8' class='input' type=password name=haslo>
  10. <input type='hidden' name='zalogowany' value='1' class='input'>
  11. <input type='image' src='templates/img/login.jpg' value='submit' onfocus='blur()' />
  12.  
  13.  
  14. </form>
  15. </div>
  16. {/else}
Wieczny
potreb nie robi się tak jak napisałeś. a co do pierwszego posta kolegi to nie działa i tak ;/

o działa następny problem gdy zaloguje się jest ok pokazuje stosowny komunikat jest luks odświeżam dalej jestem zalogowany a gdy klikam w jakiś link i strona po przez link się przeładuje to nagle juz nie jestem zalogowany czas sesji ustawilem na 3600 s
erix
A ciasteczko sesyjne nadal jest w przeglądarce? Czy może inny SID?
Wieczny
Nie wiem. sciana.gif
erix
To sprawdź... Firebug...

A właściwie, to każda porządna przeglądarka jest w stanie Ci to wyświetlić.
Wieczny
Mam mozille Firefox nie mam pojęcia gdzie to sprawdza się w tej przeglądarce ;/
mike
Jaja sobie robisz? Bierzesz się za pisanie stron a nie potrafisz obsługiwać przeglądarki?
Opanuj się tongue.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.