ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.

11.06.2009, 19:26
|
|
Познающий
Регистрация: 16.03.2009
Сообщений: 82
Провел на форуме: 148667
Репутация:
23
|
|
Я на другой странице сайта создаю сесию кодом
<?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;". Что не так?
|
|
|

11.06.2009, 20:17
|
|
Постоянный
Регистрация: 27.07.2008
Сообщений: 614
Провел на форуме: 4532332
Репутация:
1196
|
|
Сообщение от Patronik
if ($auth!=1)
if("$auth"!=1)
Сообщение от Patronik
tarfet = "blank"
tar get="blank"
Последний раз редактировалось L I G A; 11.06.2009 в 20:19..
|
|
|

12.06.2009, 00:19
|
|
Постоянный
Регистрация: 05.07.2008
Сообщений: 555
Провел на форуме: 3134311
Репутация:
1467
|
|
Patronik
session_start(); должна вызываться лишь 1 раз за выполнение скрипта. Если где-то include другого скрипта, то в том другом скрипте не должно быть session_start();
А использовать сессии ТАК уже давно не принято - сейчас надо делать так:
$_SESSION['auth'] = 1; # регистрация переменной сессии
if ( $_SESSION['auth'] != 1 ) { echo 'Ошибка'; }
Примерно так вот
|
|
|

11.06.2009, 21:03
|
|
Постоянный
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме: 4137635
Репутация:
2407
|
|
Два поста выше моего - ни о чем...
Смысл?
if ($auth != 1) выполниться в случае, если не удалось присвоить $auth значение 1
Неверно. Это выполнится, если значение $auth не равно 1. Если использовать оператор !==, то это сравнение с учетом типов данных.
Ответ по теме вопроса:
PHP код:
<?php
session_start();
if (!isset($_SESSION['auth']) || $_SESSION['auth']!=1)
{
echo '<p>Доступ закрыт</p>
<br><p><center><a href = "index.php">На главную</a></center></p>';
exit;
}
?>
А вот это:
PHP код:
session_register("auth");
$auth = 1;
замени на это:
И надо не забывать session_start()
|
|
|

11.06.2009, 22:26
|
|
Познающий
Регистрация: 16.03.2009
Сообщений: 82
Провел на форуме: 148667
Репутация:
23
|
|
2d_x
спасибо попробую так.
Мне браузер еще пишет сто не существует такой директории и проблема с session_start().
Warning session_start(). No such file or directory on /tmp/sses_123124132453452345?
типа такого! Я в php.ini правлю путь сохранения даних сесии, а он снова кажет что нет такой директории
|
|
|

11.06.2009, 22:46
|
|
Постоянный
Регистрация: 03.06.2009
Сообщений: 385
Провел на форуме: 3178262
Репутация:
389
|
|
Сообщение от Patronik
2d_x
спасибо попробую так.
Мне браузер еще пишет сто не существует такой директории и проблема с session_start().
Warning session_start(). No such file or directory on /tmp/sses_123124132453452345?
типа такого! Я в php.ini правлю путь сохранения даних сесии, а он снова кажет что нет такой директории
Он пишет что нету файла сессии в этой директории
|
|
|

11.06.2009, 23:01
|
|
Постоянный
Регистрация: 15.06.2008
Сообщений: 941
Провел на форуме: 5111568
Репутация:
2399
|
|
PHP код:
if ( session_id() == '' ) {
session_start();
}
|
|
|

11.06.2009, 23:57
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
PHP код:
if (!session_id())
session_start();
! - не существует.
|
|
|

12.06.2009, 02:24
|
|
Постоянный
Регистрация: 25.03.2008
Сообщений: 670
Провел на форуме: 4137635
Репутация:
2407
|
|
Как вас много
Вы проверяете результат присвоения ($_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..
|
|
|

12.06.2009, 09:11
|
|
Познающий
Регистрация: 16.03.2009
Сообщений: 82
Провел на форуме: 148667
Репутация:
23
|
|
Окей сделал я так :
В первом файле создал сесию таким образом и присвоил $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
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|