Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Rejestracja i logowanie.
Forum PHP.pl > Forum > PHP
Wismat
Witam! Planuję stworzyć dwa skrypty: do rejestracji, logowania i wylogowania.

Utworzyłem prostą tabelę MYSQL o nazwie users: ID, login, password oraz skrypty na podstawie informacji znalezionych w internecie

Rejestracja przebiega poprawnie, jednak nie mogę się zalogować. Za każdym razem wyskakuje błąd "Podales zle dane. Kliknij wstecz aby sprobowac ponownie." chociaz dane są na pewno poprawne

Nie wiem dlaczego, a jakimś eskpertem nie jestem więc problemu nie mogę zidentyfkować sad.gif Dlatego prosiłbym Was o pomoc w znalezieniu błędu. Proszę o poważne odpowiedzi, a nie w stylu "google.pl nie boli" itp.
Będę bardzo wdzięczny!
  1. <?php[manual][/manual]
  2.  
  3. if (isset($_POST['konto']) and isset($_POST['password']) )
  4. {
  5. $database = 'drogi_baza';
  6. require('../conn.php');
  7. mysql_select_db($database) or die("Nie uda_o si_ wybra_ bazy danych");
  8. $konto=mysql_real_escape_string(trim($_POST['konto']));
  9. $password=mysql_real_escape_string(trim($_POST['password']));
  10. if ($konto!="" and $password!="")
  11. {
  12. $password = sha1(md5($password));
  13. $zapytanie="SELECT id FROM users WHERE login = '$konto' and password = '$password'";
  14. $temp=mysql_query($zapytanie) or die("Wystapil blad #002. Zglos to do administratora.");
  15. $ile=mysql_num_rows($temp);
  16. $temp=mysql_fetch_array($temp);
  17. $id=$temp['id'];
  18. if ($ile==1)
  19. {
  20. $_SESSION['users_id']=$id;
  21. $_SESSION['login']=$konto;
  22. echo('Zostales zalogowany. Zarzadzanie komentarzami');
  23. }
  24. else
  25. {
  26. echo ('Podales zle dane. Kliknij wstecz aby sprobowac ponownie.');
  27. }
  28.  
  29. }
  30. }
  31. else
  32. {
  33. $date = date(' \g\o\d\z\. H\.i\, d\.m\.Y\\r.'); //format daty
  34. echo'<p>'.$date.'</p>';
  35. ?>
  36.  
  37. <html>
  38.  
  39. <body>
  40. <table border="1" width="300px">
  41. <form action="login.php" method="post">
  42. <tr>
  43. <td width="100px"><strong>Nazwa konta:</strong><input name="konto" type="text" value="" /><br /></td>
  44. <td width="200px"><strong>Haslo:</strong><input name="password" type="password" value="" /><br /></td>
  45. </tr>
  46. <tr>
  47. <td colspan="2"><input type="submit" value="Zaloguj" /></td>
  48. </form>
  49. </table>
  50. </body>
  51.  
  52. </html>
  53.  
  54. <?php
  55.  
  56. }?>

  1. <?php
  2. $database = 'drogi_baza';
  3. require('../conn.php');
  4. mysql_select_db($database) or die("Nie udalo sie wybrac bazy danych");
  5. if (isset($_POST['konto']) and isset($_POST['password']) and isset($_POST['password2']))
  6. {
  7. if ($_POST['password']==$_POST['password2'])
  8. {
  9. $konto = mysql_real_escape_string (trim($_POST['konto']));
  10. $password = sha1(md5(mysql_real_escape_string (trim($_POST['password']))));
  11. $ile = mysql_query("SELECT * FROM `users` WHERE login = '$konto'");
  12. $ile = mysql_num_rows($ile);
  13. if ($ile==0)
  14. {
  15. $zapytanie="INSERT INTO users (login,password) VALUES('$konto','$password')";
  16. mysql_query($zapytanie) or die("Wyst_pi_ b__d #001. Zglos to do amministratora" );
  17. echo('Konto '.$konto.' zostalo utworzone');
  18. }
  19. else
  20. {
  21. echo("Taki uzytkownik juz istnieje. Kliknij wstecz aby zarejestrowac sie ponownie.");
  22. }
  23. }
  24. else echo ("Podane hasla nie zgadzaja sie");
  25. }
  26. else
  27. {
  28. $date = date(' \g\o\d\z\. H\.i\, d\.m\.Y\\r.'); //format daty
  29. echo'<p>'.$date.'</p>';
  30. ?>
  31.  
  32. <html>
  33. <body>
  34.  
  35. <table border="1" width="300"><form action="register.php" method="post">
  36. <tr>
  37. <td colspan="2">Dodaj nowego uzytkownika</td>
  38. </tr>
  39. <tr>
  40. <td width="100">konto:<br /></td><td><input name="konto" type="text" value="" /></td>
  41. </tr>
  42. <tr>
  43. <td width="200" >haslo:</td><td><input name="password" type="password" value="" /></td>
  44. </tr>
  45. <tr>
  46. <td>Powtorz haslo:</td><td><input name="password2" type="password" value="" /><br></td>
  47. </tr>
  48. <tr>
  49. <td colspan="2"><input type="submit" value="Zarejestruj" /></td>
  50. </tr>
  51. </form></table>
  52.  
  53. </body>
  54. </html>
  55.  
  56. <?php
  57. }
  58. ?>
Michcio_
W pierwszym pliku (19 linijka) zamiast:
  1. if ($ile==1)

Daj takie coś:
  1. if ($ile)

Będzie sprawdzało czy jest ID z podanych danych. W tym co Ty podałeś to by sprawdzało czy to jest użytkownik o ID 1.
Pomogło?

EDIT:
Lub daj takie coś:
  1. if ($id)
lwc
Czy na pewno dla kolumny password dałeś odpowiednią możliwą długość pola? SHA1(MD5) wygeneruje ciąg składający się z 40 znaków. Jeśli to nie to, to w innym miejscu popełniłeś błąd, ale skrypt u mnie działa bez problemu, utworzyłem tabelę users i reszta metodą kopiuj/wklej. Co do powyższego, jest przecież dobrze, jak zapytanie zwróci jeden wynik to znaczy, że można zalogować, więc mysql_num_rows może się równać jeden. Pozdrawiam, lwc.
mat-bi
Nie, nie, nie. On dobrze napisał,, gdyż funkcja mysql_num_rows zwraca liczbę elementów.
Muszę powiedzieć, że tak zaplątanego kodu dawno nie widziałem. Po co szyfrujesz jednocześnie sha1 i mda5? toż to bez sensu. Zamiast warunku != '' wstaw !empty($zmienna).

$temp=mysql_fetch_array($temp); - brakuje drugiego argumentu - MYSQL_BOTH, MYSQL_ASSOC lub MYSQL_NUM.

Mała sugestia na przyszlość - nie używa się obecnie mysql_query etc., od tego mamy PDO wink.gif
waqmaz
Boże! Kolejny skrypt nieużywający COOKIES i oparty na tabelach ; (
mat-bi
Może tak. Podaj nam kod tworzący tabelę w mysql, bo to wygląda też na błąd tam. I włącz raportowanie błędów wszystkich.
Wismat
Jak to najczęściej bywa, błąd był banalny. Rację miał kolega lwc - w długości pola była liczba 15 a nie 40. wstydnis.gif

mat-bi Dzięki za wskazówki, zastosuję je w kodzie!

waqmaz - zawodowcem nie jestem, a strona którą tworzę jest moją pierwszą z wykorzystaniem rejestracji. Nie będzie to też wielka strona więc chyba nie będzie uciążliwości z korzystaniem z bazy MYSQL?


Michciowi również dziękuję, ale nie pomogł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.