Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem z logowaniem - ciąg dalszy
Forum PHP.pl > Forum > Przedszkole
andrzejlechniak
Witam. Wciąż nie mogę znaleźć rozwiązania mojego problemu z logowaniem, ale skonstruowałem na podstawie innego skryptu coś takiego:

  1. require_once ('funkcje/db_connect.php');
  2.  
  3. function logowanie() {
  4. echo '<form action="t1.php" method="POST">
  5. <div>Login:</div>
  6. <div><input type="text" name="login"></div>
  7.  
  8. <div>Password:</div>
  9. <div><input type="password" name="password"></div>
  10.  
  11. <div><input type="submit" name="submit" value="Zaloguj"></div>
  12. </form>';
  13. }
  14.  
  15. if(!isset($_POST['submit'])) {
  16. logowanie();
  17. }
  18. else {
  19. $sql="SELECT * FROM osoby WHERE login='$login'";
  20. $result=mysql_query($sql);
  21. while ($row=mysql_fetch_array($result)) {
  22. $password=$row['password'];
  23. $login=$row['login'];
  24. $uprawnienia=$row['uprawnienia'];
  25. if(($password !=$password) || ($login !=$login)) {
  26. echo 'Zły login';
  27. logowanie();
  28. } else {
  29. session_register("login");
  30. session_register("uprawnienia");
  31. }
  32. }
  33. }


Wchodzi do skryptu i jest generalnie OK, ale teoretycznie każdy może się zalogować nawet nie pisząc swojego loginu, poza tym jak otworzę stronę w drugiej karcie to znów mam formularz, znaczy się strona nie zapamiętuje sesji. Jak temu zaradzić. Proszę o pomoc.

PS. Tak na marginesie proszę o wyrozumiałość. Jestem jeszcze początkujący jeśli chodzi o PHP, uczę się...
Spawnm
Dane do sesji zapisuj przez $_SESSION['nazwa'] = 'Wartość';
To czy wyświetlić formularz uzależnij od tego czy sesjia istnieje a nie od $_POST
Uwierzytelnianie rób 1 zapytaniem bez pętli ale z AND czyli WHERE login=? AND pass=?
+flitruj dane przez mysql_real_escape_string()
andrzejlechniak
Napisałem coś takiego:

  1. require_once('funkcje/db_connect.php');
  2.  
  3. if(isset($_POST['login']) && $_POST['password']) {
  4. $login=$_POST['login'];
  5. $password=$_POST['password'];
  6.  
  7. $query = "SELECT * FROM osoby WHERE login='$login' AND password='$password'";
  8. $result=mysql_query($query) or die (mysql_error());
  9.  
  10. if(mysql_num_rows($result)==1) {
  11. $_SESSION['login'] = true;
  12. header('Location:t1.php');
  13. } else {
  14. $error='Błąd';
  15. }
  16. }
  17.  
  18. if($_SESSION['login'] !=true) {
  19. echo '<form action="t1.php" method="POST">
  20. <div>Login:</div>
  21. <div><input type="text" name="login"></div>
  22.  
  23. <div>Password:</div>
  24. <div><input type="password" name="password"></div>
  25.  
  26. <div><input type="submit" name="submit" value="Zaloguj"></div>
  27. </form>';
  28. }
  29. elseif ($_SESSION['login'] == true) {
  30. echo 'OK';
  31. }


Ale wciąż każdy może wejść nawet nie wpisując loginu, jak to mogę zmienićquestionmark.gif? POMOCY, błagam exclamation.gif!!!!
DiH
A nie jest przypadkiem tak, że Twoja sesja została zapamiętana? Dodaj wylogowywanie i wyloguj się, albo odpal skrypt w innej przeglądarce i sprawdź. Twoja sprawa jak sprawdzasz, czy użytkownik jest zalogowany, ale mógłbyś po prostu zapisać logi usera do zmiennej i sprawdzać poprzez isset czy taka zmienna jest już zainicjowana. Mógłbyś potem wykorzystać tą zmienną do pokazywania kto jest zalogowany w danej sesji.

Edit: i po co Ci tyle divów... Już inaczej się treści rozmieścić nie da?
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.