Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Błąd w skrypcie logowania
Forum PHP.pl > Forum > Przedszkole
K4mil94
Witam, mam taki oto skrypt, tylko w tym problem że gdy próbuje się zalogować to cały czas mówi że wpisano złe dane gdy wpisuje dobre oO
  1. <?php session_start(); ?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
  3. "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl">
  5. <head>
  6. <meta http-equiv="Content-type" content="application/xhtml+xml; charset=utf-8" />
  7. <meta name="Author" content=" Kamil P " />
  8.  
  9. <title>Logowanie</title>
  10.  
  11. <link rel="stylesheet" href=" login.css " type="text/css" />
  12. </head>
  13. <body>
  14.  
  15. <div class="top">
  16. <img src="images/img_01.png" alt="top" /><img src="images/img_02.png" alt="top" />
  17. </div>
  18.  
  19. <div class="text">
  20.  
  21. <?php
  22.  
  23. function Form() {
  24. echo "<form method=post>
  25. Login:<br />
  26. <input type=text name=login /><br />
  27. Hasło:<br />
  28. <input type=password name=pass /><br />
  29. <input type=submit name=submit value=Zaloguj />
  30. </form>";
  31. }
  32.  
  33. function Login() {
  34. $login = addslashes($_POST['login']);
  35. $pass = addslashes(md5($_POST['pass']));
  36.  
  37. if(empty($login)||empty($pass)) {
  38. echo "Nie wypełniono wszystkich pól!<br />";
  39. } else {
  40.  
  41. $query = "SELECT * FROM `rp_users` WHERE login='$login'";
  42. $result = mysql_query($result);
  43. $d = mysql_fetch_array($result);
  44.  
  45. if($d['login'] != $login || $d['pass'] != $pass) {
  46. echo "Podano złe dane!<br />";
  47. } else {
  48.  
  49. $_SESSION['logged'] = true;
  50. $_SESSION['login'] = $d['login'];
  51.  
  52. echo "Zalogowano poprawnie!<br />";
  53. }
  54. }
  55. }
  56.  
  57. if(!isset($_POST['submit'])) {
  58. Form();
  59. } else {
  60. Login();
  61. }
  62. ?>
  63. </div>
  64.  
  65. <div class="footer">
  66. <img src="images/img_08.png" alt="stopka" /><br />
  67. <a href="http://validator.w3.org/check?uri=referer"><img src="http://www.w3.org/Icons/valid-xhtml11" alt="Valid XHTML 1.1" height="31" width="88" /></a><a href="http://jigsaw.w3.org/css-validator/check/referer"><img style="border:0;width:88px;height:31px" src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Poprawny CSS!" />
  68. </div>
  69.  
  70. </body>
  71. </html>
blahy
po 1 troche nie na temat, ale w zapytaniu hasla nie sprawdzasz? tylko login? winksmiley.jpg

po 2 wypisz sobie w takim razie w tym ifie gdzie ci wyswietla: Podano złe dane zmienne $login, $pass, $d['login] i $d['pass']. tam juz bedzie bardziej wiadomo gdzie jest blad
K4mil94
Ad 1 . Z tym tez nie działa tongue.gif
Ad 2 . oO tak jakby mysql_fetch_array nie działało
PanGuzol
Przyjrzyj się linom 41-43
K4mil94
już to poprawiłem, dalej nic.
Cysiaczek
Czyli jak to wygląda?
Postaraj się zdefiniować problem bardziej konkretnie (i zmień tym samym tytuł tematu).
lessi
Po drugie źle robisz:
  1. $pass = addslashes(md5($_POST['pass']));

po co ci funcja addslashes jak i tak string jest już wtedy w md5, a wynikiem funkcji md5 są 32 znaki 0-9 i a-f
K4mil94
Teraz jest tak:
  1. function Login() {
  2. include_once("includes/dbcon.php");
  3.  
  4. $login = addslashes($_POST['login']);
  5. $pass = md5($_POST['pass']);
  6.  
  7. if(empty($login)||empty($pass)) {
  8. echo "Nie wypełniono wszystkich pól!<br />";
  9. } else {
  10.  
  11. $query = "SELECT * FROM `rp_users` WHERE login='$login' AND pass='$pass'";
  12. $result = mysql_query($query);
  13. $d = mysql_fetch_array($result);
  14.  
  15. if($d['login'] != $login || $d['pass'] != $pass) {
  16. echo "Podano złe dane!<br />";
  17. } else {
  18.  
  19. $_SESSION['logged'] = true;
  20. $_SESSION['login'] = $d['login'];
  21.  
  22. echo "Zalogowano poprawnie!<br />";
  23. }
  24. }
  25. }
  26.  
  27. if(!isset($_POST['submit'])) {
  28. Form();
  29. } else {
  30. Login();
  31. }
  32. ?>
Dalej nie działa ;]
evolucja
print_r($d)
K4mil94
Nie wyświetla nic :/
Neeke
a sprawdź i podaj ci wyświwetla taki zapis:
  1. echo'<pre>';
  2. print_r($d);
  3. echo'</pre>';


//----------

spóźniłem sie smile.gif

///--------------------


To zamiast $d w print_r() zobacz co przekazujesz w $_POST
K4mil94
Dalej nic ;/

@up: Array ( [login] => admin [pass] => admin [submit] => Zaloguj )
wskazuje że wszystko ok.
evolucja
Dalej nic? I my też do kurdy nędzy dalej nic nie wiemy. Albo zaczniesz pisać po ludzku albo w ogóle nie pomożemy.

Dalej nic:
- nic się nie wyświetliło?
- nic się nie wyświetliło co by mogło tobie pomóc?
- wyszedł błąd?
- nie wiesz o co chodzi z tym printem?
Neeke
To jeszcze inaczej

do wywołania zapytania dołącz taki kod
  1. $result = mysql_query($query) or die('error:'. mysql_errno().' ' . mysql_error().' <br/> SQL:/->'.$query);
K4mil94
Nic się nie wyświetla, wiem o co chodzi z printem, ale on nic nie wyświetla.

@up: coś takiego : error:1054 Unknown column 'login' in 'where clause'
SQL:/->SELECT * FROM `rp_users` WHERE login='admin' AND pass='21232f297a57a5a743894a0e4a801fc3'

^ ten bład juz poprawiłem , ale dalej nie loguje .
Neeke
Czyli sprawa jasna
Odwołujesz się do nieistniejącej kolumny

A dane sa napewno takie same jak w bazie danych czyli

21232f297a57a5a743894a0e4a801fc3 <- taki masz wpis w bazie danych jako hasło?
evolucja
szybszy był tongue.gif
K4mil94
Ten problem rozwiązany tylko jeszcze jeden problem :

  1. function Install() {
  2. $adminpass = md5($_POST['adminpass']);
  3. $key = addslashes($_POST['key']);
  4.  
  5. if(empty($adminpass)||empty($key)) {
  6. echo "Nie wypełniono wszystkich pól!<br />";
  7. } else {
  8.  
  9. include_once("../includes/dbcon.php");
  10.  
  11. $query = "INSERT INTO `rp_users` (`id`, `login`, `pass`, `auth`) VALUES ('', 'admin', '$adminpass', '1');";
  12. mysql_query($query);
  13.  
  14. echo " Usuń katalog /install z serwera! Login administratora to : admin";
  15.  
  16. }
  17. }
Nie dodaje uzytkownika.
Neeke
Jak masz w bazie danych autoincrement na Id to to pomijasz pierwszy wpis w tym przypadku '',...

@UP
Jeszcze raz spojżałem na ten zapis do bazy danych, faktycznie nie musi pomijać moja nie uwaga
evolucja
Przecież miałeś ten sam błąd powyżej:
error:1054 Unknown column 'login'

@UP
Nic nie musi pomijać winksmiley.jpg
K4mil94
Zmieniłem właśnie nazwe tej kolumny na login i logowanie działa tongue.gif Tylko tutaj nie dodaje usera biggrin.gif Nie wiem czy to wina webserva czy jak bo na cba dodało oO
evolucja
W takim razie podziękuj.

Kurde, włącz myślenie i próbuj samemu.. Zmień 12 linijkę z poprzedniej strony na dole na:
mysql_query($query) or die('error:'. mysql_errno().' ' . mysql_error().' <br/> SQL:/->'.$query);

i błąd masz podany na tacy.
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.