Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php+MySQL] Logowanie
Forum PHP.pl > Forum > PHP
lukas_jg
Witam
Próbowałem napisać własne logowanie ale co chwile coś mi zawodzi.
-pobiera userów z bazy mysql
-sprawdza czy wpisane haslo i pass jest ok jezeli ok to ustawia zmienna xx= '1' i ustawia cookies loginu i hasła po to aby trzymało logowanie
-wylogowanie po klikniaciu na log out




działało przy jednym userze w bazie

  1. <?php
  2.  
  3. if($page == "logout&")
  4. { 
  5.  
  6. ?>
  7. <meta http-equiv="Refresh" content="0; URL=">
  8. <?
  9.  
  10. }
  11.  
  12. $xx = '0';
  13.  
  14. $link = mysql_connect(xxxxxxxx.pl', 'xxxxxxxxxxxxxx', 'xxxxxxxxx') or die ("Nie masz uprawnien");
  15. mysql_select_db("xxxxxxx");
  16. $query = "SELECT * FROM users ORDER BY data DESC";
  17. $result = mysql_query ($query);
  18. $ile = mysql_num_rows($result);
  19.  
  20. for($a=0;$a<$ile;$a++)
  21. {
  22. $row=mysql_fetch_array($result);
  23. if(($login == $row['email']) and ($passwd == $row['pass'])){
  24. $xx = '1';
  25. session_register('login');
  26. session_register('passwd');
  27. }
  28. else { if($xx == '0') session_destroy(); }
  29. }
  30.  
  31.  
  32.  
  33.  
  34. ?>
Coyote
uzywaj tagow php.... bo tak to nawet nie chce mi sie czytac tego kodu
lukas_jg
Nikt nie wie ?
rama
Hmm, spróbuj leciutko zmodyfikować swój skrypt. Zakładam, że dane userów (takie jak email i haslo) przesyłaś poprzez formularz, racja? Wówczas wystarczy zrobić procedure logowania wyłącznie dla jednego użytkownika, czyli możesz zmodyfikować swój sql syntax, aby zawierał dodatkowy składnik, tj. winksmiley.jpg
  1. ... WHERE email = $_POST['email'] ...
Składnia ta wybierze jedynie jeden wiersz z danymi odpowiedniego użytkownika, więc w efekcie wystarczy porównać hasło znajdujące się w bazie z tym z formularza smile.gif

PS Zastanawiam sie, po co robisz pętle?
  1. <?php for($a=0;$a<$ile;$a++) { ... } ?>

PS1
  1. <meta http-equiv="Refresh" content="0; URL=">

możesz zamienić na
  1. <?php header( 'Location: index.php' ); ?>
piwoszeq
calosc jest zle.
Lepiej napisz od nowa winksmiley.jpg
Cysiaczek
Masz tak:
  1. <?php
  2. $query = "SELECT * FROM users ORDER BY data DESC";
  3. ?>

Czyli wybierze wszystkie rekordy z bazy, a Tobie jest potrzebny jeden konkretny prawda?
Sprawdź za pomocą mysql_num_rows() ile rekordów wybrałeś i zastanów sie, co się dzieje z Twoją zmienną $xx - jakie wartości przybiera i ile razy.

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