Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Sesje i if w logowaniu
Matjas
post
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 6.08.2010

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


Witam

Mam taki problem. Od niedawna zacząłem naukę PHP, przestudiowałem kilka książkowych przykładów dotyczących logowania i postanowiłem napisać coś własnego. Sam skrypt na podstawie danych z formularza sprawdza czy w bazie są już takie dane, a jeśli są to wykonuje akcję. No i z tą akcją jest problem...

Wszystko bazuje na 3 plikach.

  • index.php
  • login.php
  • portal.php


Na stronie index znajduje sie formularz do logowania i przesylany jest do login.php

W pliku login.php jest taki skrypt
  1. <?php
  2. $loginF = $_POST['login']; // dane z formularza
  3. $hasloF = $_POST{'haslo'};
  4.  
  5. $host = "jakis host";
  6. $user = "jakis uzytkownik";
  7. $pass = "jakies haslo";
  8.  
  9. mysql_connect($host,$user,$pass)
  10. or die ("Bład połaczenia z serwerem MySQL");
  11. mysql_select_db("jakas baza");
  12.  
  13. $zapytanie = "SELECT * FROM user WHERE login='$loginF' and haslo='$hasloF'";
  14.  
  15. $rezultat = mysql_query($zapytanie) or die ("Błąd w zapytaniu");
  16.  
  17. while ($tabela = mysql_fetch_array($rezultat)) {
  18. $loginS = $tabela['login']; //dane wyciagniete z bazy
  19. $hasloS = $tabela['haslo'];
  20. }
  21. if ($loginF == $loginS and $hasloF == $hasloS) { //sprawdzenie zgodnosci danych z formularza i danych z bazy
  22. $_SESSION['zalogowany'] = 1;
  23. header("location:portal.php");
  24. } else {
  25. include "niepoprawny.php";
  26. }
  27.  
  28. $_SESSION['loginsesja'] = $loginS; //ta zmienna jest do powitania po nazwie uzytkownika.
  29. ?>


W pliku portal.php znajduje się taka treść
  1. <?php
  2. if ($_SESSION['zalogowany'] != 1) {
  3. echo "tresc wlasciwa";
  4. } else {
  5. header("location:index.php");
  6. }
  7. ?>


Problem dokladnie dotyczy funkcji if w pliku login.php po której następuje stworzenie zmiennej sesyjnej "zalogowany" z wartoscia 1.
Nie wiem dlaczego ale wartosc dla tej zmiennej przyjmuje 1 nawet jesli warunek nie zostaje spełniony. Czyli jeżeli bezpośrednio spróbuje w adresie wejść w plik login.php to bez wzgledu na to czy wpisałem jakieś dane w formularzu czy nie moja zmienna ma wartość 1. Sprawdziłem to funkcją print_r(SESSION);

Czy może ktoś z Was wie dlaczego tak się dzieje?

Z pozdrowieniami
Mateusz
Go to the top of the page
+Quote Post
krispak
post
Post #2





Grupa: Zarejestrowani
Postów: 250
Pomógł: 55
Dołączył: 27.08.2008

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


W ogole nie rozumiem dlaczego dwa razy sprawdzasz wartosci? Jesli w bazie znaleziono uzytkownika o takim hasle i loginie to nie rozumiem sprawdzania tego znow po wyciagnieciu danych..
  1. $zapytanie = mysql_query("SELECT * FROM user WHERE login='$loginF' and haslo='$hasloF'") or die ("Błąd w zapytaniu");
  2. $num_rows = mysql_num_rows($zapytanie);
  3. if($num_rows == 1)
  4. {
  5. $tabela = mysql_fetch_array($zapytanie);
  6. $_SESSION['zalogowany'] = 1;
  7. $_SESSION['loginsesja'] = $loginS;
  8. header("location:portal.php");
  9. } else {
  10. include "niepoprawny.php";
  11. }

Pozdrawiam

Ten post edytował krispak 6.08.2010, 22:47:56
Go to the top of the page
+Quote Post
Szymoneks12
post
Post #3





Grupa: Zarejestrowani
Postów: 67
Pomógł: 1
Dołączył: 31.03.2010

Ostrzeżenie: (10%)
X----


Cytat(Matjas @ 6.08.2010, 21:51:41 ) *
Portal.php:
  1. <?php
  2. if ($_SESSION['zalogowany'] != 1) {
  3. echo "tresc wlasciwa";
  4. } else {
  5. header("location:index.php");
  6. }
  7. ?>


Nie powinno być tak?:

  1. <?php
  2. if ($_SESSION['zalogowany'] == 1) {
  3. echo "tresc wlasciwa";
  4. } else {
  5. header("location:index.php");
  6. }
  7. ?>


Ten post edytował Szymoneks12 7.08.2010, 09:29:06
Go to the top of the page
+Quote Post
krispak
post
Post #4





Grupa: Zarejestrowani
Postów: 250
Pomógł: 55
Dołączył: 27.08.2008

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


Dokladnie jak mowi @Szymoneks12 zmien jeszcze ten warunek bo jezeli w sesji przyjmiesz jeden za zalogoanego to zawsze bedzie wyrzucalo do header
Go to the top of the page
+Quote Post
Matjas
post
Post #5





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 6.08.2010

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


Hmm... Faktycznie.

Dziękuję Panowie za pomoc. (IMG:style_emoticons/default/smile.gif)

Pozdrawiam
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.08.2025 - 01:36