Mam problem z przekazywaniem zmiennych za pomocą sesji.
Problem dotyczy systemu logowania.
index.php
<? $nonauth = ""; if (($auth = $_GET['auth']) == 'none') $nonauth = "podałeś błędny login lub hasło"; if (($auth = $_GET['auth']) == 'empty') $nonauth = "podaj login i hasło"; ?> . . <body> . . <form method="post" action="doit.php"> <p>login: <input type="text" name="user" /> <p>haslo: <input type="password" name="pass" /></p> <p><input type="submit" name="submit" value="zaloguj" /></p> </form> </body>
doit.php
<? $_SESSION['username'] = $_POST['user']; $_SESSION['pass'] = $_POST['pass']; $_SESSION['authuser'] = 0; if ($_SESSION['username'] == NULL or $_SESSION['pass'] == NULL) { header('Location: <a href="http://www.strona.pl/cms/index.php?auth=empty');" target="_blank">http://www.strona.pl/cms/index.php?auth=empty');</a> exit; } //sprawdza czy podany login pasuje do hasla z bazy $user = $_SESSION['username']; include ('conn.php'); $zapytanie = "SELECT pass FROM osoby WHERE login ='".$user."'"; $odp = mysql_query($zapytanie); while ($row = mysql_fetch_row($odp)) { $pass_db = $row[0]; } //sprawdzenie hasla if($pass_db == $_SESSION['pass']) { $_SESSION['authuser'] = 1; header('Location: <a href="http://www.strona.pl/cms/cms.php');" target="_blank">http://www.strona.pl/cms/cms.php');</a> exit; }else { header('Location: <a href="http://www.strona.pl/cms/index.php?auth=none');" target="_blank">http://www.strona.pl/cms/index.php?auth=none');</a> exit(); } ?>
cms.php
<? ?> . . <body> . . . . </body>
Problem:
Po poprawnym zalogowaniu (hasło sprawdzone w bazie, więc $_session['username'] musi być ustawione) przy próbie wyświetlenia wartości w cms.php z okazuje się, że session['username'] ma wartość NULL.
Wystarczy jednak, że źle podam hasło lub login i wpiszę prawidłowe wartości wszystko pięknie cieka.
Pytanie:
Jak to jest możliwe?

Gdzie mój błąd??
Proszę o pomoc