Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Błędy w skryptach rejestracji i logowania
Forum PHP.pl > Forum > Przedszkole
artur2233
Witam, wziąłem sktypty rejestracji i logowania z tej strony
Skrypt działa poprawnie, tzn. rejetruje userów, loguje itp. Jednak w skrypcie logowania jest błąd:
Notice: Undefined index: name in C:\xampp\htdocs\www\login.php on line 32
Notice: Undefined index: password in C:\xampp\htdocs\www\login.php on line 36
W skrypcie rejestracji są takie same błędy, ale dopasowane do pól tego skryptu.

Wiem, że to jakiś bardzo prosty błąd, jefnak nie mogę ich wyłapać.
Bardzo proszę o pomoc w wyszukaniu tych błędów.

Pozdrawiam
Kshyhoo
Pół roku na forum, więc powinieneś był sobie poradzić z Notice. To nie błąd, tylko komunikat. Jaki? Użyj translatora Google to się dowiesz. Potem wróć na Forum i użyj szukajki. Ten temat był wałkowany tysiące razy.
artur2233
Użyłem szukajki, jednak polecane wyłączenie wyświetlania tych komunikatów nie jest najlepszym pomysłem pod słońcem.

w linii nr 8
  1. if(isset($_POST['name'])) {

pole "name" jest zissetowane, jednak wciąż komunikaty pojawiają się.

Mógłby ktoś mądry poprawić kod?

Z góry dziękuję za pomoc.
Kshyhoo
Nie miałeś poszukać, jak wyłączyć komunikaty, ale jak im zapobiegać. Przetłumaczyłeś treść komunikatu?
artur2233
Tłumaczenie funkcjonuje ok, ale rozwiązanie problemu już niezbyt.
Sam radziłeś w innym temacie wyłączyć wyświetlanie komunikatów wink.gif
Sephirus
Ucinek kodu z tego "skryptu"...

Jest if ze sprawdzaniem czy "name" jest w POST ale po ifie i tak jest echo z odwołaniem do $_POST['name'] i $_POST['password']. Tak więc tu leży błąd.

  1. if(isset($_POST['name'])) {
  2. // filtrujemy dane...
  3. $_POST['name'] = clear($_POST['name']);
  4. $_POST['password'] = clear($_POST['password']);
  5. // i kodujemy hasło
  6. $_POST['password'] = codepass($_POST['password']);
  7.  
  8. // sprawdzamy prostym zapytaniem sql czy podane dane są prawidłowe
  9. $result = mysql_query("SELECT `user_id` FROM `users` WHERE `user_name` = '{$_POST['name']}' AND `user_password` = '{$_POST['password']}' LIMIT 1");
  10. if(mysql_num_rows($result) > 0) {
  11. // jeśli tak to ustawiamy sesje "logged" na true oraz do sesji "user_id" wstawiamy id usera
  12. $row = mysql_fetch_assoc($result);
  13. $_SESSION['logged'] = true;
  14. $_SESSION['user_id'] = $row['user_id'];
  15. echo '<p>Zostałeś poprawnie zalogowany! Możesz teraz przejść na <a href="index.php">stronę główną</a>.</p>';
  16. } else {
  17. echo '<p>Podany login i/lub hasło jest nieprawidłowe.</p>';
  18. }
  19. }
  20.  
  21. // wyświetlamy komunikat na zalogowanie się
  22. echo '<form method="post" action="login.php">
  23. <p>
  24. Login:<br>
  25. <input type="text" value="'.$_POST['name'].'" name="name">
  26. </p>
  27. <p>
  28. Hasło:<br>
  29. <input type="password" value="'.$_POST['password'].'" name="password">
  30. </p>
  31. <p>
  32. <input type="submit" value="Zaloguj">
  33. </p>
  34. </form>';
  35.  


Powinno być na przykłąd tak:

  1. if(isset($_POST['name'])) {
  2. // filtrujemy dane...
  3. $_POST['name'] = clear($_POST['name']);
  4. $_POST['password'] = clear($_POST['password']);
  5. // i kodujemy hasło
  6. $_POST['password'] = codepass($_POST['password']);
  7.  
  8. // sprawdzamy prostym zapytaniem sql czy podane dane są prawidłowe
  9. $result = mysql_query("SELECT `user_id` FROM `users` WHERE `user_name` = '{$_POST['name']}' AND `user_password` = '{$_POST['password']}' LIMIT 1");
  10. if(mysql_num_rows($result) > 0) {
  11. // jeśli tak to ustawiamy sesje "logged" na true oraz do sesji "user_id" wstawiamy id usera
  12. $row = mysql_fetch_assoc($result);
  13. $_SESSION['logged'] = true;
  14. $_SESSION['user_id'] = $row['user_id'];
  15. echo '<p>Zostałeś poprawnie zalogowany! Możesz teraz przejść na <a href="index.php">stronę główną</a>.</p>';
  16. } else {
  17. echo '<p>Podany login i/lub hasło jest nieprawidłowe.</p>';
  18. }
  19. } else {
  20. $_POST['name'] = '';
  21. $_POST['password'] = '';
  22. }
  23.  
  24. // wyświetlamy komunikat na zalogowanie się
  25. echo '<form method="post" action="login.php">
  26. <p>
  27. Login:<br>
  28. <input type="text" value="'.$_POST['name'].'" name="name">
  29. </p>
  30. <p>
  31. Hasło:<br>
  32. <input type="password" value="'.$_POST['password'].'" name="password">
  33. </p>
  34. <p>
  35. <input type="submit" value="Zaloguj">
  36. </p>
  37. </form>';


Że też ludzie którzy umieszczają to w necie nie sprawdzają jak działa z error_reporting(E_ALL) ...
artur2233
Dzięki wielkie za wyjaśnienie problemu.
Kshyhoo
@Sephirus, lepiej kolekcjonować "Pomógł" niż nauczyć myśleć? Za kilka dni wróci na forum z równie trywialnym problemem.
Sephirus
@Kshyhoo, naprawdę uważasz, że robię to dla "pomógł"? To jakiś wyścig szczurów czy coś?

Normalnie skierowałbym na LMGTFY, lecz zraziło mnie w tym konkretnym przypadku to, że autor tematu skorzystał z gotowego skryptu ładnie opisanego w internecie, który był nie do końca przemyślany. Widać na pierwszy rzut oka, że autor jest początkujący. Czemu więc nie miałbym wytknąć niedbalstwa tym, którzy umieszczają takie rzeczy i pomóc komuś przy tym opisując co było źle?

Jeśli autor wróci z banalnym problemem to prędzej czy później czy to ja czy to Ty czy ktokolwiek inny z forum i tak pokaże, że nic nie umie. Nie sądzę bym zmienił bieg historii wink.gif
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.