Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [MySQL][PHP]Problem z logowaniem, Strona nie widzi danych przesyłanych przez formularz
andrzejlechniak
post 22.10.2010, 14:35:21
Post #1





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 7.11.2008

Ostrzeżenie: (0%)
-----


Witam
Mam dziwny problem z logowaniem. Mam wprawdzie (chyba ale nie do końca, bo piszę tutaj) kod, ale gdy wprowadzam dane i chcę przesłać dalej w odpowiedzi dostaję... z powrotem pusty formularz, tak jakbym go nie wysłał. O co chodzi, mogę prosić o pomoc. PILNIE proszę, Andrzej

  1. $login=$_POST['login'];
  2. $password=$_POST['password'];
  3.  
  4. //Ochorna przed SQL injection
  5. $login = stripslashes($login);
  6. $login = mysql_real_escape_string($login);
  7. $password = stripslashes($password);
  8. $password = mysql_real_escape_string($password);
  9.  
  10. if($_GET["login"]=="niezalogowany") {
  11. } elseif($login<>"" and $password<>"") {
  12.  
  13. $password=md5($password);
  14. $query=mysql_query("SELECT * FROM tabela WHERE login='$login' and password='$password'");
  15. if(mysql_num_rows($query)==1)
  16. {
  17. $dane=mysql_fetch_array($query);
  18. $_SESSION["zalogowany"]="tak";
  19. $_SESSION["login"]=$dane["login"];
  20. $_SESSION["password"]=$dane["password"];
  21. }
  22. }
  23.  
  24. if ($_SESSION["zalogowany"]=="tak") {
  25. echo "Witaj:".$_SESSION["login"]. ".<br />";
  26. echo "<a href=\"index.php?login=niezalogowany\">Wyloguj się</a>";
  27. } else {
  28. echo <<<Niezalogowany
  29. <form action="index.php" method="POST">
  30. <div>Login:</div>
  31. <div><input type="text" name="login"></div>
  32.  
  33. <div>Password:</div>
  34. <div><input type="password" name="password"></div>
  35.  
  36. <div><input type="submit" value="Zaloguj"></div>
  37. </form>
  38. Niezalogowany;
  39. }
  40.  
  41. if($_SESSION["zalogowany"]=="tak") {
  42. echo 'tekst tylko dla zalogowanych';
  43. }
[sql][/sql]
Go to the top of the page
+Quote Post
CuteOne
post 22.10.2010, 15:08:06
Post #2





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


podmień to :
  1. } elseif($login<>"" and $password<>"") {
  2.  
  3. $password=md5($password);
  4. $query=mysql_query("SELECT * FROM tabela WHERE login='$login' and password='$password'");
  5. if(mysql_num_rows($query)==1)
  6. {
  7. $dane=mysql_fetch_array($query);
  8. $_SESSION["zalogowany"]="tak";
  9. $_SESSION["login"]=$dane["login"];
  10. $_SESSION["password"]=$dane["password"];
  11. }
  12. }

na to :
  1. } elseif($login<>"" and $password<>"") {
  2. echo $login."<br>"; //sprawdzasz czy skrypt doszedł do tego momentu
  3. $password=md5($password);
  4. $query=mysql_query("SELECT * FROM tabela WHERE login='$login' and password='$password'") or die(mysql_error());
  5. if(mysql_num_rows($query)==1)
  6. {
  7. echo "wszystko oki zapis do sessji";
  8. $dane=mysql_fetch_array($query);
  9. $_SESSION["zalogowany"]="tak";
  10. $_SESSION["login"]=$dane["login"];
  11. $_SESSION["password"]=$dane["password"];
  12. }
  13. }


ps. rozumiem, że masz gdzieś session_start() i session_write_close() ?

Ten post edytował CuteOne 22.10.2010, 15:14:11
Go to the top of the page
+Quote Post
andrzejlechniak
post 22.10.2010, 15:21:52
Post #3





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 7.11.2008

Ostrzeżenie: (0%)
-----


Podmieniłem, ale efekt ten sam, wciąż wyświetla mi się formularz, tz. mam napis, że jest np. admin a poniżej formularz, więc proszę o inne podpowiedzi. A
Go to the top of the page
+Quote Post
CuteOne
post 22.10.2010, 16:20:24
Post #4





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


ten napis się wyświetla: wszystko oki zapis do sessji?questionmark.gif
Go to the top of the page
+Quote Post
andrzejlechniak
post 22.10.2010, 16:25:11
Post #5





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 7.11.2008

Ostrzeżenie: (0%)
-----


Tak jak napisałem, napis się wyświetla, a formularz tak samo widnieje, jak widniał do tej pory. Nic się nie zmieniło. Strona nie pobiera danych z formularza. POMOCY!!!
Go to the top of the page
+Quote Post
CuteOne
post 22.10.2010, 16:31:44
Post #6





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


Cytat
ps. rozumiem, że masz gdzieś session_start() i session_write_close() ?
Go to the top of the page
+Quote Post
andrzejlechniak
post 22.10.2010, 16:35:56
Post #7





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 7.11.2008

Ostrzeżenie: (0%)
-----


Mam początek sesji na samym początku strony, tak jak session_write_close(). Ale wciąż nie czyta formularza. Wszystkie parametry są identyczne z tymi z bazy.
Go to the top of the page
+Quote Post
CuteOne
post 22.10.2010, 16:40:44
Post #8





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


Wrzuć całość skryptu bo coś mi tu nie gra
Go to the top of the page
+Quote Post
andrzejlechniak
post 22.10.2010, 16:43:59
Post #9





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 7.11.2008

Ostrzeżenie: (0%)
-----


  1. require_once ('baza.php');
  2.  
  3. $login=$_POST['login'];
  4. $password=$_POST['password'];
  5.  
  6. //Ochorna przed SQL injection
  7. $login = stripslashes($login);
  8. $password = stripslashes($password);
  9. $login = mysql_real_escape_string($login);
  10. $password = mysql_real_escape_string($password);
  11.  
  12. if($_POST["login"]=="niezalogowany") {
  13. }
  14. elseif($login<>"" and $password<>"")
  15. {
  16. echo $login."<br />"; //sprawdzasz czy skrypt doszedł do tego momentu
  17. $password=md5($password);
  18. $query=mysql_query("SELECT * FROM tabela WHERE login='$login' and password='$password'") or die(mysql_error());
  19. if(mysql_num_rows($query)==1)
  20. {
  21. echo "wszystko oki zapis do sessji";
  22. $dane=mysql_fetch_array($query);
  23. $_SESSION["zalogowany"]="tak";
  24. $_SESSION["login"]=$dane["login"];
  25. $_SESSION["password"]=$dane["password"];
  26. }
  27. }
  28.  
  29. if ($_SESSION["zalogowany"]=="tak") {
  30. echo "Witaj:".$_SESSION["login"]. ".<br />";
  31. echo "<a href=\"index.php?login=niezalogowany\">Wyloguj się</a>";
  32. } else {
  33. echo <<<Niezalogowany
  34. <form action="index.php" method="POST">
  35. <div>Login:</div>
  36. <div><input type="text" name="login"></div>
  37.  
  38. <div>Password:</div>
  39. <div><input type="password" name="password"></div>
  40.  
  41. <div><input type="submit" value="Zaloguj"></div>
  42. </form>
  43. Niezalogowany;
  44. }
  45.  
  46. if($_SESSION["zalogowany"]=="tak") {
  47. echo 'tekst tylko dla zalogowanych';
  48. }
Go to the top of the page
+Quote Post
sazian
post 22.10.2010, 16:44:03
Post #10





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

Ostrzeżenie: (0%)
-----


Cytat(andrzejlechniak @ 22.10.2010, 15:35:21 ) *
  1. } elseif($login<>"" and $password<>"") {
  2.  

to nie delphi
różny w php to != a nie <>

daj na początku pliku var_dump($_POST); skoro twierdzisz że formularz nie wysyła danych winksmiley.jpg
Go to the top of the page
+Quote Post
Ramzaa
post 22.10.2010, 16:46:32
Post #11





Grupa: Zarejestrowani
Postów: 207
Pomógł: 17
Dołączył: 4.08.2009

Ostrzeżenie: (0%)
-----


Mam pytanie: po co wrzucasz hasło do sesji? I nie wiem czy wiesz, ale masz masę błędów w kodzie. Przeanalizuj kilka skryptów logowania i wyciągnij wnioski. Poza tym jak dobrze Cię zrozumiałem, chodzi o to, że formularz w ogóle nie odpowiada. Ja proponuję zrobić to tak:
  1. <form action="" method="post">
  2. <div>Login:</div>
  3. <div><input type="text" name="login"></div>
  4.  
  5. <div>Password:</div>
  6. <div><input type="password" name="password"></div>
  7.  
  8. <div><input type="submit" value="Zaloguj" name="zaloguj"></div>
  9. </form>

I następnie:
  1. if ($_POST['zaloguj']) {
  2. // tutaj sprawdzasz czy istnieje taki użytkownik, itd..
  3. }

Pozdrawiam.

Ten post edytował Ramzaa 22.10.2010, 16:47:09
Go to the top of the page
+Quote Post
andrzejlechniak
post 22.10.2010, 17:08:56
Post #12





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 7.11.2008

Ostrzeżenie: (0%)
-----


Sprawdzałem funkcją var_dump ($_POST) i wg tego wszystko działa, tylko że... nie działa nic. Tzn. żadnych zmian. Podmieniłem również

  1. elseif($login<>"" and $password<>"")


na

  1. elseif($login !="" and $password !="")


i ten sam efekt, choć mimo iż var_dump pokazuje, że wszystko w porządku. Coś jest nie tak, tylko co?
Go to the top of the page
+Quote Post
CuteOne
post 22.10.2010, 18:15:36
Post #13





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


Pytałem czy masz session_write_close.......

  1. require_once ('baza.php');
  2.  
  3. $login=$_POST['login'];
  4. $password=$_POST['password'];
  5.  
  6. //Ochorna przed SQL injection
  7. $login = stripslashes($login);
  8. $password = stripslashes($password);
  9. $login = mysql_real_escape_string($login);
  10. $password = mysql_real_escape_string($password);
  11.  
  12. if($_GET["login"]=="niezalogowany") {
  13.  
  14. }
  15. elseif($login != "" and $password != "")
  16. {
  17. echo $login."<br />"; //sprawdzasz czy skrypt doszedł do tego momentu
  18. $password=md5($password);
  19. $query=mysql_query("SELECT * FROM tabela WHERE login='$login' and password='$password'") or die(mysql_error());
  20. if(mysql_num_rows($query)==1)
  21. {
  22. echo "wszystko oki zapis do sessji";
  23. $dane=mysql_fetch_array($query);
  24. $_SESSION["zalogowany"]=true;
  25. $_SESSION["login"]=$dane["login"];
  26. $_SESSION["password"]=$dane["password"];
  27. }
  28. }
  29.  
  30. if ($_SESSION["zalogowany"]) {
  31. echo "Witaj:".$_SESSION["login"]. ".<br />";
  32. echo "<a href=\"index.php?login=niezalogowany\">Wyloguj się</a>";
  33. } else {
  34. echo <<<Niezalogowany
  35. <form action="index.php" method="POST">
  36. <div>Login:</div>
  37. <div><input type="text" name="login"></div>
  38.  
  39. <div>Password:</div>
  40. <div><input type="password" name="password"></div>
  41.  
  42. <div><input type="submit" value="Zaloguj"></div>
  43. </form>
  44. Niezalogowany;
  45. }
  46.  
  47. if($_SESSION["zalogowany"]) {
  48. echo 'tekst tylko dla zalogowanych';
  49. }


ps. tak jak wyżej pisali- poczytaj o zabezpieczeniach [solenie hasła, session hjacking itp. itd]

Ten post edytował CuteOne 22.10.2010, 20:58:47
Go to the top of the page
+Quote Post
andrzejlechniak
post 22.10.2010, 18:37:50
Post #14





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 7.11.2008

Ostrzeżenie: (0%)
-----


Ok, zabezpieczenia zabezpieczeniami, ale strona nie odczytuje danych, w tym tkwi problem, a zabezpieczenia to inna bajka. Wezmę i to pod uwagę. ALe póki co chodzi mi o ustalenie przyczyny dlaczego strona z formularzem nie przetwarza kodu PHP...
Go to the top of the page
+Quote Post
lessi
post 22.10.2010, 18:45:53
Post #15





Grupa: Zarejestrowani
Postów: 89
Pomógł: 12
Dołączył: 1.12.2009

Ostrzeżenie: (0%)
-----


1. Nie wyrzuca ci tam przypadkiem jakiś błędów
2. Tak jak pisano wcześniej, po co wrzucasz hasło do sesji. Przecież i tak nie możesz wykorzystać tego do następnego logowania bo się i tak sesja skończy. Login może jeszcze jakoś wykorzystać, ale hasło nie potrzeba i nie jest to bezpieczne. 3. Wpisz jeszcze po linii 20
  1. echo 'login:'. $login;
  2. echo 'hasło:'. $password;

aby się przekonać czy hasło jest przesłane.
4. Ja bym użył w warunku
  1. elseif(!empty($login) and !empty($password))

ale to już jak tobie wygodnie.
5. Jeżeli wyświetli ci się login i hasło to porównaj je ręcznie z bazą danych, może tutaj jest błąd bo nie wyświetlasz informacji wtedy jeżeli jest np złe hasło.

____________________

Ten post edytował lessi 22.10.2010, 18:52:09
Go to the top of the page
+Quote Post
andrzejlechniak
post 22.10.2010, 18:58:32
Post #16





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 7.11.2008

Ostrzeżenie: (0%)
-----


Sprawdzałem, hasło i login takie jak z bazy, ale za pomocą funkcji "error_reporting(E_ALL);" i sprawdziłem i wywala mi coś takiego: Notice: Undefined index: zalogowany in C:\xampp\xamp...\index.php on line 37.
Go to the top of the page
+Quote Post
sazian
post 22.10.2010, 19:22:24
Post #17





Grupa: Zarejestrowani
Postów: 1 045
Pomógł: 141
Dołączył: 19.09.2006
Skąd: B-tów

Ostrzeżenie: (0%)
-----


no to może daj var_dump na $_SESSION żeby zobaczyć czy wszystko jest dobrze zapisane
Go to the top of the page
+Quote Post
andrzejlechniak
post 22.10.2010, 19:32:04
Post #18





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 7.11.2008

Ostrzeżenie: (0%)
-----


Teraz z kolei wychodzą mi same głupoty, przesłałem dane i niby jest OK, ale nie mogę się wylogować. Za pomocą var_dump'a wszystko pokazuje że OK
Go to the top of the page
+Quote Post
CuteOne
post 22.10.2010, 20:56:56
Post #19





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

Ostrzeżenie: (0%)
-----


Skopiuj kod który ci podałem.. bo twój to głupota przez duże Y
Go to the top of the page
+Quote Post
andrzejlechniak
post 22.10.2010, 21:13:56
Post #20





Grupa: Zarejestrowani
Postów: 242
Pomógł: 0
Dołączył: 7.11.2008

Ostrzeżenie: (0%)
-----


Skopiowałem i... i nic się nie zmieniło. Teraz jestem cały czas zalogowany nie mogąc się wylogować.
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.07.2025 - 18:01