Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] logowanie, po zalogowaniu przekazywane są nadal puste zmienne!
Forum PHP.pl > Forum > Przedszkole
bl4ck_b0x
Witam mam problem z formularzem do logowania. Oto kod:

  1. <?
  2. echo '<?xml version="1.0" encoding="UTF-8"?>'; 
  3. include('../cfg.php');
  4. include('../security.php');
  5. $login_admin=Zabezpiecz($_POST['login_admin']);
  6. $pass_admin=md5(Zabezpiecz($_POST['pass_admin']));
  7. ?>
  8. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  9. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  10. <html xmlns="http://www.w3.org/1999/xhtml">
  11. <head>
  12. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  13. <link rel="stylesheet" type="text/css" href="style.css" />
  14. <title>.</title>
  15. </head>
  16. <body>
  17. <div id="all">
  18. <div id="top">.administracja</div>
  19. <div id="content">
  20. <div id="menu">.logowanie</div>
  21. <div class="menu">
  22. <?
  23. if(!isset($_SESSION['logged'])&&(empty($_POST['login_admin']))&&(empty($_POST['pass_admin'])))
  24. {
  25. ?>
  26.  
  27. <table>
  28. <form method="POST" name="form">
  29. <tr>
  30. <td>login: </td><td><input type="text" name="login_admin"></td>
  31. </tr>
  32. <tr>
  33. <td>pass: </td><td><input type="password" name="pass_admin"></td>
  34. <tr>
  35. <td><input type="submit" value="Zaloguj"></td>
  36. </tr>
  37. </form>
  38. </table>
  39.  
  40. <?
  41. }
  42. elseif((isset($login_admin))&&(isset($pass_admin)))
  43. {
  44. $a='SELECT login,pass FROM users';
  45. $aa=mysql_query($a);
  46. $aaa=mysql_fetch_array($aa);
  47. if(($aaa[0]===$login_admin)&&($aaa[1]===$pass_admin))
  48. {
  49. $_SESSION['logged']=''.$login_admin.'';
  50. echo '<b>'.$_SESSION['logged'].'</b> zostałeś pomyślnie zalogowany';
  51. }
  52. else
  53. {
  54. echo "$login_admin : $pass_admin <br />";
  55. echo 'Login lub hasło jest nieprawidłowe';
  56. }
  57. }
  58. else
  59. {
  60. echo 'Dane wprowadzone do formularza są błędne';
  61. }
  62. ?>
  63. </div>
  64. </div>
  65. <div id="bottom">Created by bl4ck_b0x &copy; 2008</div>
  66. </div>
  67. </body>
  68. </html>
  69. <?
  70. ?>


Kod działa niby dobrze, mogę się zalogować jednak gdy wciskam jeszcze raz enter (wczytuje ponownie stronę) to pojawia mi się (dlatego tam zamiescilem aby wyswietlalo mi przekazywane zmienne z formularza) to:

  1. <?php
  2. : d41d8cd98f00b204e9800998ecf8427e
  3. Login lub hasło jest nieprawidłowe
  4. ?>


Czyli tak jakby z formularza było coś ciągle przekazywane. Bardzo proszę o pomoc ;/ siedzę nad tym od godziny i nie widzę błędu...
b_chmura
co robi Twoja funkcja Zabezpiecz()?
bl4ck_b0x
  1. <?php
  2. function Zabezpiecz($text)
  3. {
  4. return $text;
  5. }
  6. ?>
b_chmura
w takim razie standardowa procedura, sprawdź co po przesłaniu formularza zawiera zmienna $_POST

  1. <?php
  2. echo '<pre>';
  3. print_r($_POST);
  4. echo '</pre>';
  5. ?>


a isset() pozamieniaj na !empty()
Kicok
1. Masz skopane warunki w instrukcjach warunkowych. Zastanów się dobrze czy jak będziesz zalogowany ( czyli zmienna $_SESSION['logged'] będzie ustawiona ), to warunek w linii 25 będzie spełniony?

2. Warunek w linii 44 będzie spełniony zawsze. Zmienne te tworzysz na samym początku i nawet jeśli będą puste, to isset" title="Zobacz w manualu PHP" target="_manual i tak zwróci true.



A tak na marginesie, to jak będziesz miał w bazie danych więcej niż jednego użytkownika, to będziesz miał problemy z zalogowaniem się na większość kont ;]
Przeglądnij sobie przykłady na: mysql_fetch_array" title="Zobacz w manualu PHP" target="_manual (chodzi mi o pętlę while), ewentualnie google -> kurs SQL -> WHERE
bl4ck_b0x
więc jak to zmienić? mógłbyś odpowiedni wyedytować kod tak aby działał? będę wdzięczny...
1010
Cytat(bl4ck_b0x @ 26.01.2008, 20:17:39 ) *
więc jak to zmienić? mógłbyś odpowiedni wyedytować kod tak aby działał? będę wdzięczny...

Dziś zobaczyłem mądry cytat w podpisie mike'a...
Mianowicie: "Daj komuś rybę, a nakarmisz go na jeden dzień. Naucz go łowić ryby, a nakarmisz go na całe życie."

odnosząc się do niego

po pierwsze... nikomu nie będzie się chciało edytować twojego długiego kodu...

po drugie... jak dostaniesz gotowe rozwiązanie to niczego nowego się nie nauczysz i na następnym razem znów będziesz liczył na gotowe rozwiązanie...

po trzecie... najpierw pomyśl i spróbuj sam rozwiązać

po czwarte... z nastawieniem "ja sobie polerze a wy mi zróbcie" daleko nie zajdziesz...

Wybaczcie jeśli byłem zbyt ostry, ale mam zły dzień...
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.