2012-06-08 5 views
0
странные

Я устанавливаю переменной сессии в PHP следующим образом:PHP переменные сессии поведение

$_SESSION['pass'] = $pass; 

где $pass некоторый пароль, то есть. "test4;" Сессионная переменная с левой стороны работает отлично, но я нашел свой сюрприз и обеспокоен тем, что $pass с правой стороны тоже кажется переменной сеанса, то есть после установки, я могу отменить $pass с любой страницы, и, похоже, продолжайте, пока я не уничтожу сессию.

Что дает? Как я могу это предотвратить?

Спасибо!

+2

Ну, где же '$ pass' взялось? –

+2

Вы работаете с [register globals] (http://bg.php.net/manual/en/ini.core.php#ini.register-globals)? – lanzz

+0

Возможно, где-то вы назначаете переменную сессии '$ pass'. – Leri

ответ

4

Register globals, вероятно, включен - это огромный риск для безопасности! Убедитесь, что это так, и убедитесь, что он выключен. Кроме того, это устаревший метод.

Если register_globals включена, то вы можете turn it off либо изменив этот параметр в php.ini ИЛИ, помещая это в файле .htaccess:

php_flag register_globals off 
+0

Где я могу это найти? Сайт размещен удаленно на общем сервере, но у меня есть доступ к некоторым настройкам. – user1260310

+0

'phpinfo();' - он сообщает вам все, что вам нужно знать. – Repox

+0

есть регистровые глобальные блоки. Вы знаете, как отключить его, т. Е. В каком файле? – user1260310

-1

Вы назначаете сессию и $ пропуск в быть равными друг другу. Попробуйте только с помощью

if(!isset($_SESSION['pass'])) 

С любой информацией, вы хотите проверить

+0

Я действительно не понимаю, что это касается вопроса OP? Он говорит, что $ pass (не его $ _SESSION ['pass']) доступен повсюду. – Bono

Смежные вопросы