Я на другой странице сайта создаю сесию кодом
<?php
session_start();
if ($auth!=1)
{
echo'<p>Доступ закритий</p>
<br><p><center><a href = "index.php" tarfet = "blank">На головну</a></center></p>';
exit;
}
?>
при регистациий переменной в сесию делаю:
session_start();
session_register("auth");
$auth = 1;
Но страница проверки переменной говорит echo'<p>Доступ закритий</p>. При том что файл сесии создался в папке хранения сесий и там если открить блокнотом записано "auth|i:1;". Что не так?
Patronik
session_start(); должна вызываться лишь 1 раз за выполнение скрипта. Если где-то include другого скрипта, то в том другом скрипте не должно быть session_start();
А использовать сессии ТАК уже давно не принято - сейчас надо делать так:
2d_x
спасибо попробую так.
Мне браузер еще пишет сто не существует такой директории и проблема с session_start().
Warning session_start(). No such file or directory on /tmp/sses_123124132453452345?
типа такого! Я в php.ini правлю путь сохранения даних сесии, а он снова кажет что нет такой директории
2d_x
спасибо попробую так.
Мне браузер еще пишет сто не существует такой директории и проблема с session_start().
Warning session_start(). No such file or directory on /tmp/sses_123124132453452345?
типа такого! Я в php.ini правлю путь сохранения даних сесии, а он снова кажет что нет такой директории
Как вас много
Вы проверяете результат присвоения ($_SESSION['auth'] != 1), а не сравнения ($_SESSION['auth'] !== 1)
Хорошо, что ты один такой...
Открываем мануал по операторам сравнения:
http://ru2.php.net/manual/ru/language.operators.comparison.php
Что же мы видим?
Цитата:
$a != $b | Не равно | TRUE если $a не равно $b.
$a !== $b | Тождественно не равно | TRUE если $a не равно $b или в случае, если они разных типов (Добавлено в PHP 4)
То же самое я говорил несколькими постами выше.
Специально поясню:
1!=0 это true
0!=0 это false
-------
"1"!=0 это true
"1"!=1 это false - тип данных не учитывается
-------
"1"!==0 это true
"1"!==1 это true - имеем типы данных разные
И еще - по одному-единственному оператору присвоения (=) и его комбинированным вариантам (+=, *=, .= и т.д.) можешь почитать здесь:
http://php.benscom.com/manual/ru/language.operators.assignment.php
Последний раз редактировалось d_x; 12.06.2009 в 02:40..
Окей сделал я так :
В первом файле создал сесию таким образом и присвоил $auth.
session_start();
$_SESSION['auth']=1;
Во втором файле чтобы использовать переменную сесии написал так:
<?php
session_start();
if (!isset($_SESSION['auth']) || $_SESSION['auth']!=1)
{
echo '<p>Доступ закрыт</p>
<br><p><center><a href = "index.php">На главную</a></center></p>';
exit;
}
?>
Браузер видает ошыбку
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at Z:\home\train.com\www\auth.php:9) in Z:\home\train.com\www\auth.php on line 31