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
<?php $loginF = $_POST['login']; // dane z formularza $hasloF = $_POST{'haslo'}; $host = "jakis host"; $user = "jakis uzytkownik"; $pass = "jakies haslo"; $zapytanie = "SELECT * FROM user WHERE login='$loginF' and haslo='$hasloF'"; $loginS = $tabela['login']; //dane wyciagniete z bazy $hasloS = $tabela['haslo']; } if ($loginF == $loginS and $hasloF == $hasloS) { //sprawdzenie zgodnosci danych z formularza i danych z bazy $_SESSION['zalogowany'] = 1; } else { include "niepoprawny.php"; } $_SESSION['loginsesja'] = $loginS; //ta zmienna jest do powitania po nazwie uzytkownika. ?>
W pliku portal.php znajduje się taka treść
<?php if ($_SESSION['zalogowany'] != 1) { } else { } ?>
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