Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem ze skryptem logowania
Forum PHP.pl > Forum > Przedszkole
krzesik
Witam, mam dziwny problem ze skryptem do logowania. Polega on naty, że jeśli user wpisze złe dane do otrzymuje komunikat o tym fakcie, jeśli jednak znow źle wpisze to zostaje przeniesiony na stronę której nie powinien widzieć.
Generalnie wygląda to tak, jakby skrypt sprawdzał pierwszym razem w MySQL login i hasło, a drugim całkowicie to olewał..... Prosze o poradę.

kod z logowanie.php
  1. ...
  2. <?php
  3.  
  4. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  5.  
  6. if (!isset($_SESSION['login']))
  7. {
  8. if ($_POST['wyslane'] and !empty($_POST['login']) and !empty($_POST['haslo']) )
  9. {
  10. include 'config.php';
  11. $login = htmlspecialchars(trim($_POST["login"]), ENT_QUOTES);
  12. $haslo = htmlspecialchars(trim($_POST["haslo"]), ENT_QUOTES);
  13.  
  14. {
  15. $_SESSION["zalogowany"]=1;
  16. $_SESSION['status'] = $_POST['status'] +0;
  17. }
  18.  
  19. $wynik=mysql_query("SELECT * FROM uzytkownik WHERE (login='$login' and haslo='$haslo' and status<>2) LIMIT 1");
  20.  
  21. if (mysql_num_rows($wynik) == 1)
  22. {
  23. $informacja = mysql_fetch_array($wynik);
  24. $_SESSION["login"] = $informacja["login"];
  25. $_SESSION["uprawnienia"] = $informacja["uprawnienia"] +0;
  26. $_SESSION["status"] = $informacja["status"] +0;
  27. header('Location: logowanie.php');
  28. }
  29. else {
  30. echo '<center><b><p>
  31. <img src=img/ikony/user_delete.png style=width:16px;height:16px;border:0px; /><br>
  32. Nieprawidłowy Login / Hasło </p></b>';
  33. }
  34. mysql_close($baza);
  35.  
  36. }
  37. echo <<< KONIEC
  38.  
  39. <html>
  40. <body>
  41. <center>
  42. <body onload="document.logowanie.login.focus()">
  43. <form name="logowanie" form action="logowanie.php" method="post">
  44. <input type="hidden" name="wyslane" value="TRUE" />
  45. <input type="hidden" name="uprawnienia" value="$uprawnienia" />
  46. <p><img src="img/ikony/user.png" title="Podaj swój LOGIN" style="width:16px;height:16px;border:0px;" />&nbsp;&nbsp;Login: <input type="text" name="login" value="" title="Podaj Nazwisko i Imię"/></p>
  47. <p><img src="img/ikony/key.png" title="Podaj swoje HASŁO" style="width:16px;height:16px;border:0px;" />&nbsp;&nbsp;Hasło: <input type="password" name="haslo" title="Podaj swoje HASŁO"/></p>
  48. <p><input type="submit" value="Zaloguj" /></p>
  49. </form>
  50. </center>
  51. </body>
  52. </html>
  53.  
  54. KONIEC;
  55.  
  56. }
  57. else
  58. {
  59. header('Location: tabela.php');
  60. }
  61. if ($_GET["wyloguj"] == "tak") {
  62. //niszczenie sesji użytkownika
  63. header('Location: index.php'); // przekierwanie na stronę główną
  64. }
  65.  
  66. ?>
  67. ...


a to mam w skrypcie po autoryzacji tabela.php:

  1. ...
  2. {
  3. header('Location: logowanie.php');
  4. }
  5. ...
Wazniak96
Myślę, że błąd leży w drugim if, według mnie powinno to wyglądać tak:
  1. if(empty($_SESSION["zalogowany"]))$_SESSION["zalogowany"]=0;
  2.  
  3. if (!isset($_SESSION['login']) || empty($_SESSION['login']))
  4. {


Rejestrujesz sesję, a if sprawdzał czy sesja istnieje. A skoro została zarejestrowana to istnieje.
Możesz zrobić to poprawiając if lub też usuwając register. Będzie tak nawet lepiej ponieważ nowa wersja PHP nie obsługuje już tej funkcji i sypią się błędy. smile.gif

Tak PS: Po co sesja "zalogowany" skoro z góry ustawiasz ją w dwóch miejscach na 0, i po co te tokeny z 17 i 19 lini?
krzesik
niestety nie pomogło, nadal objaw jest taki sam, skrypt po drugim błędym logowaniu przechodzi na stronę po haśle...
nospor
$_SESSION["zalogowany"]=1;
Ustawiasz to niezależnie od tego czy koleś wpisał dane poprawne czy nie. Nie jest to przypadkiem błąd?

No i to:
session_register("login");
wywal to jeśli nie zrobiłeś tego do tej pory.
krzesik
Bardzo dziękuję o to właśnie chodziło
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.