Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Rejestracja i logowanie.
Wismat
post
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 29.07.2008

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


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. ?>


Ten post edytował Wismat 9.02.2011, 19:32:14
Go to the top of the page
+Quote Post
Michcio_
post
Post #2





Grupa: Zarejestrowani
Postów: 62
Pomógł: 3
Dołączył: 30.07.2008

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


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)


Ten post edytował Michcio_ 9.02.2011, 19:39:13
Go to the top of the page
+Quote Post
lwc
post
Post #3





Grupa: Zarejestrowani
Postów: 69
Pomógł: 11
Dołączył: 5.10.2008
Skąd: Wielkopolska

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


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.

Ten post edytował lwc 9.02.2011, 19:49:38
Go to the top of the page
+Quote Post
mat-bi
post
Post #4





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


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
Go to the top of the page
+Quote Post
waqmaz
post
Post #5





Grupa: Zarejestrowani
Postów: 69
Pomógł: 0
Dołączył: 22.01.2011
Skąd: Murowana Goślina

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


Boże! Kolejny skrypt nieużywający COOKIES i oparty na tabelach ; (
Powód edycji: [Daiquiri]: Trzymajmy się tematu.
Go to the top of the page
+Quote Post
mat-bi
post
Post #6





Grupa: Zarejestrowani
Postów: 690
Pomógł: 92
Dołączył: 6.02.2011

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


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.
Go to the top of the page
+Quote Post
Wismat
post
Post #7





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 29.07.2008

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


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.
Go to the top of the page
+Quote Post

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 Aktualny czas: 22.08.2025 - 04:49