Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Notice: Undefined index: name - jak to mogę naprawić ?
Forum PHP.pl > Forum > Przedszkole
spec8320
Witam otóż mam problem trochę raczkuje z php i analizuje prosty skrypt (przepisuje pod swoje zapotrzebowania). I otóż mam taki warningi:

Notice: Undefined index: name in C:\xampp\htdocs\login.php on line 36

Notice: Undefined index: password in C:\xampp\htdocs\login.php on line 40


Linie błędów pokrywają się z liniami załączonego kodu... proszę o pomoc smile.gif

I drugie pytanie (to już do bardziej zaawansowanych). Jaki jest najskuteczniejszy sposób zabezpieczania logowania ? Zapisywanie do sesji loginu a w mysql zapisywanie Session_ID i porównywanie ? Zauważyłem, że w wielu skryptach dla "zielonych" w sesji są trzymane np. Login i Hasło. albo Logged = true co wydaje się za przeproszeniem kompletnym idiotyzmem stąd pytanie jaki jest skuteczny sposób zabezpieczenia tego procesu ?

  1. <?php
  2. include 'config.php';
  3. db_connect();
  4.  
  5. // sprawdzamy czy user nie jest przypadkiem zalogowany
  6. if(!$_SESSION['logged']) {
  7. // jeśli zostanie naciśnięty przycisk "Zaloguj"
  8. if(isset($_POST['name'])) {
  9. // filtrujemy dane...
  10. $_POST['name'] = clear($_POST['name']);
  11. $_POST['password'] = clear($_POST['password']);
  12. // i kodujemy hasło
  13. $_POST['password'] = codepass($_POST['password']);
  14.  
  15. // sprawdzamy prostym zapytaniem sql czy podane dane są prawidłowe
  16. $result = mysql_query("SELECT `user_id` FROM `users` WHERE `user_name` = '{$_POST['name']}' AND `user_password` = '{$_POST['password']}' LIMIT 1");
  17. if(mysql_num_rows($result) > 0) {
  18. // jeśli tak to ustawiamy sesje "logged" na true oraz do sesji "user_id" wstawiamy id usera
  19. $row = mysql_fetch_assoc($result);
  20. $_SESSION['logged'] = true;
  21. $_SESSION['user_id'] = $row['user_id'];
  22. echo '<p>Zostałeś poprawnie zalogowany! Możesz teraz przejść na <a href="index.php">stronę główną</a>.</p>';
  23. } else {
  24. echo '<p>Podany login i/lub hasło jest nieprawidłowe.</p>';
  25. }
  26. }
  27. if (isset($_POST['name'])) {
  28. echo $_POST['name'];
  29. } else {
  30. echo 'foo not set';
  31. }
  32. // wyświetlamy komunikat na zalogowanie się
  33. echo '<form method="post" action="login.php">
  34. <p>
  35. Login:<br>
  36. <input type="text" value="'.$_POST['name'].'" name="name">
  37. </p>
  38. <p>
  39. Hasło:<br>
  40. <input type="password" value="'.$_POST['password'].'" name="password">
  41. </p>
  42. <p>
  43. <input type="submit" value="Zaloguj">
  44. </p>
  45. </form>';
  46. } else {
  47. echo '<p>Jesteś już zalogowany, więc nie możesz się zalogować ponownie.</p>
  48. <p>[<a href="index.php">Powrót</a>]</p>';
  49. }
  50.  
  51. db_close();
  52. ?>
IceManSpy
To jest tylko notka, ze takie indexy w tablicy nie istnieją. Zaistnieją pewno, jeśli wyślesz formularz.

Co do drugiego pytania, to rozwiązań jest wiele - trzymanie id usera, mail usera ale nigdy nie hasło! Trzymaj to w sesji, a jeśli chcesz bardziej skomplikowane to może być sesja + baza danych. Ale to temat rzeka i nie ma idealnych rozwiązań.
spec8320
a jak się pozbyć tych Notice ? Wybacz programowałem we wcześniejszej wersji PHP bodajże nawet 4 i tam nie było takich problemów

Problem rozwiązałem sam:

  1. $name = isset($_POST['name']) ? $_POST['name'] : '';
  2. $password = isset($_POST['password']) ? $_POST['password'] : '';
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.