Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Błędy w skryptach rejestracji i logowania
artur2233
post
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 4.03.2012
Skąd: Kielce

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


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





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




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.


--------------------
Go to the top of the page
+Quote Post
artur2233
post
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 4.03.2012
Skąd: Kielce

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


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.

Ten post edytował artur2233 12.12.2012, 16:41:28
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #4





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Nie miałeś poszukać, jak wyłączyć komunikaty, ale jak im zapobiegać. Przetłumaczyłeś treść komunikatu?


--------------------
Go to the top of the page
+Quote Post
artur2233
post
Post #5





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 4.03.2012
Skąd: Kielce

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


Tłumaczenie funkcjonuje ok, ale rozwiązanie problemu już niezbyt.
Sam radziłeś w innym temacie wyłączyć wyświetlanie komunikatów wink.gif
Go to the top of the page
+Quote Post
Sephirus
post
Post #6





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


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


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
artur2233
post
Post #7





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 4.03.2012
Skąd: Kielce

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


Dzięki wielkie za wyjaśnienie problemu.
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #8





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




@Sephirus, lepiej kolekcjonować "Pomógł" niż nauczyć myśleć? Za kilka dni wróci na forum z równie trywialnym problemem.


--------------------
Go to the top of the page
+Quote Post
Sephirus
post
Post #9





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


@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


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
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 - 07:16