Witam,
Mam problem z utrzymaniem wartości zmiennych w sesji.
Kod wygląda następująco:
index.php<?
$_SESSION['authuser'] = 0; //określa, czy użytkownik jest zalogowany
$nonauth = "";
$reg = "";
$wylogowany = "";
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";
if (($auth = $_GET['auth']) == 'end') $wylogowany = "wylogowałeś się z serwisu";
if (($regis = $_GET['register']) == 'true') $reg = " "." rejestracja przebiegła pomyślnie<br>możesz się
teraz zalogować";
?>
.
.
<body>
<?
echo "<p style=color:red;><b>".$nonauth."</b></p>" ; echo "<p style=color:green;><b>".$reg."</b></p>" ; $reg = "";
echo "<p style=color:green;><b>".$wylogowany."</b></p>" ; ?>
<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'] = $user = $_POST['user'];
$pass = $_POST['pass'];
$_SESSION['authuser'] = 0;
if ($user == NULL or $pass == NULL) { //sprawdza czy wypełniono pola formularza
header('Location: <a href="http://www.piromant.webd.pl/piromantrum/cms/index.php?auth=empty');" target="_blank
">http://www.piromant.webd.pl/piromantrum/cm...th=empty');</a> exit;
}
//sprawdza czy podany login pasuje do hasla z bazy
include ('polaczenie.php');
$zapytanie = "SELECT pass FROM osoby WHERE login ='".$user."'";
$odp = mysql_query($zapytanie);
while ($row = mysql_fetch_row($odp)) {
$pass_db = $row[0];
}
//sprawdzenie poprawności hasla
if($pass_db == $pass) {
$_SESSION['authuser'] = '1';
header('Location: <a href="http://www.piromant.webd.pl/piromantrum/cms/cms.php');" target="_blank">http://www.piromant.webd.pl/piromantrum/cms/cms.php');</a>
}
else
{
header('Location: <a href="http://www.piromant.webd.pl/piromantrum/cms/index.php?auth=none');" target="_blank
">http://www.piromant.webd.pl/piromantrum/cm...uth=none');</a> exit;
}
?>
cms.php - i tu jest właśnie problem...<?
($_SESSION['authuser'] != 1) {
header('Location: <a href="http://www.piromant.webd.pl/piromantrum/cms/denied.php');" target="_blank
">http://www.piromant.webd.pl/piromantrum/cm...nied.php');</a> exit;
}
?>
problem występuje przy odwołaniu się do zmiennej sesyjnej $_SESSION['authuser'] z poziomu pliku cms.php .Jeśli gdziekolwiek indziej sprawdzę wartość to jest ona ustawiona (ma przypisaną wartość 0 lub 1, ale zawsze istnieje), natomiast gdy próbuję przyrównać ją w pliku cms.php do innej wartości okazuje się, że $_SESSION['authuser'] == NULL.
Jak to jest możliwe? Przetrzepałem kod na lewo i prawo i nie mam pojęcia.
Co najciekawsze:Jeśli np: źle się zaloguję, lub nie podam wartości w index.php wszystko zaczyna działać poprawnie...
Jestem bardzo początkujący w temacie php ale zagadnienie wydaje się raczej trywialne (IMG:
http://forum.php.pl/style_emoticons/default/sad.gif) A może nie, może trzeba użyć jakiegoś polecenia albo coś.
Doradźcie proszę