Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Logowanie na sesjach a odświeżanie
Forum PHP.pl > Forum > Przedszkole
Pooniek
Witam,
Proszę o wskazówkę w którym momencie popełniłem błąd, ponieważ strona nad którą pracuję z logowaniem opartym na sesji wciąż wyświetla formularz logowania nawet jeżeli się poprawnie zaloguje. Pomaga jedynie odświeżenie strony/kliknięcie na którykolwiek link...
Poniżej fragment odpowiedzialny za wyświetlanie formularza logowania:
  1. if(!isset($_SESSION['login'])){
  2. echo "<form name=logowanie method=POST action=index.php?id=0 align=right>
  3. login:<input type=text name=login title=Pole loginu class=login>
  4. haslo:<input type=password name=haslo title=Pole hasla class=login>
  5. <input type=submit name=submit value=Loguj title=Zaloguj class=login>
  6. </form>";
  7. $_GET['id']=10;
  8. } else {
  9. echo"Witaj: ".$_SESSION['login']." <a href=index.php?id=9>Wyloguj!</a>";
  10.  
  11. }

adres do strony:
strona
przykładowe dane:
login:puniek
pass:123
Czy ktoś spotkał się kiedyś z takim problemem?
pozdrawiam
Puniek
Sky_walker
A gdzie masz kod walidacji hasła i przypisywania sesji $_SESSION['login'] jakiejś wartości?
Pooniek
  1. if(isset($_POST['login']) && isset($_POST['haslo'])){
  2.  
  3. $md5 = md5($_POST['haslo']);
  4. $wynik = mysql_query("SELECT `login` , `haslo` FROM `uzytkownicy` WHERE `login` = '".$_POST['login']."' AND `haslo` = '".$_POST['haslo']."'") or die ("Blad w zapytaniu do bazy.aa");
  5. $wiersz = mysql_fetch_array($wynik);
  6. if (mysql_num_rows($wynik)>0) //istnieje uzytkownik o podanym loginie i hasle
  7. {
  8. $_SESSION['login'] = $wiersz[0];
  9. } else
  10. {
  11. echo "Niepoprawne haslo!";
  12. }
  13. }

Tutaj sprawdzam czy jest taka konfiguracja loginu i hasła w bazie i jak tak to przypisuje do $_SESSION['login'] nazwę użytkownika.
Sky_walker
kilka uwag:
- nigdy nie wrzucaj zmiennych które ustawia użytkownik bezpośrednio do zapytania SQL (zobacz: mysql_real_escape_string )
- wstaw nazwy pól formularzy i wszystkie atrybuty w cudzysłowiach - szczególnie jeśli używasz spacji, np. zamiast title=Pole loginu powinieneś mieć title="Pole loginu"
- W3C się kłania

Jak zrobisz poprawki - spróbuj jeszcze raz, ogólnie kod wygląda ok, pomijając kwestię tego, że brakuje session_start w części walidującej.

Ewentualnie możesz spróbować var_dump(mysql_fetch_array($wynik)) i zdebugować skrypt na podstawie tego co wyjdzie.
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.