2012-08-12 2 views
0

Я использую сеанс для хранения некоторых данных на моем веб-сайте php, но на какой-то странице, когда я набирал данные в сеансе, менялся несколько раз, а иногда и то же самое. Я искал много, и найти ответ назначение переменной сеанса изменено

session id value changes

", если у вас есть регистр глобал, вы можете видеть поведение, как, что, если вы используете переменный $ идентификатор в коде. В качестве теста, попробуйте :

<?php 
session_start(); 
$_SESSION['testing'] = 'Foo'; 
$testing = 'bar'; 
die($_SESSION['testing']); 
?> 

"

помочь мне я искал в моем файле PHP, но я не найти подобные переменные, как переменные сессии, так что проблема ?? расскажите мне о php-сессии и, если возможно, предложите хорошие книги.

отредактирован:

я установил php.ini, как вы все, говоря его проблемы register_global от и чем ckeck с помощью phpinfo(); функции и проверьте register_global выключено. , но через некоторое время я вошел в систему с моим идентификатором, а затем на mypage menu.php, доступ к которому я получил после того, как его измененный сеанс зарегистрировал идентификатор, и я зарегистрировал другую учетную запись автоматически. помогите мне

ответ

1

Отключение Register_Globals путем добавления следующей строки в файл php.ini может решить эту проблему.

register_globals = Off

Если вы используете сервис Shared веб-хостинга, следуйте:

  • Если у вас есть доступ к папке/CGI-BIN затем создать свой собственный файл php.ini внутри него.
  • И если у вас нет доступа, создайте свой файл php.ini в корневой папке.

И после этого добавьте вышеупомянутую строку в файл php.ini.

Добавление следующей строки кода в файл .htaccess также устраняет проблему.

php_flag register_globals off

+0

Могу ли я добавить php.ini во все разделы? – Mehuldabhi

+0

Я загрузил его в папку cgi-bin ...... нужно будет добавить в другие папки в public_html ???? – Mehuldabhi

+0

вам нужен только один файл php.ini. Если ваш веб-сервер поддерживает файл htaccess, то лучшим решением является файл .htaccess. – rajukoyilandy

0

Вы не должны использовать регистр глобалам поэтому оно не должно быть проблемой.

Добавьте эту строку в .htaccess, чтобы отключить, если у вас есть регистр глобалам бегущего

php_flag register_globals off 

это не может быть сделано с помощью ini_set() во время выполнения, так что вам нужно будет использовать Htaccess или php.ini, как в предыдущем ответе.

+0

это дает мне внутреннюю ошибку сервера – Mehuldabhi

0

В наши дни маловероятно, что register_globals является вашей проблемой. Скорее, это связано с a), где хранятся фактические данные сеанса; и b) как «идентификатор сеанса» передается от одного запроса к следующему.

Первое, на что нужно обратить внимание, это session_save_path(), в котором говорится, PHP, где на диске хранятся данные, которые вы помещаете в переменные сеанса.

Другая часть немного сложнее, но о том, как установлен файл cookie, который позволяет PHP знать, чтобы загрузить тот же сеанс, а не создавать новый. Возможно, вам придется искать такие вещи, как время жизни этого файла cookie, или область действия (домен/субдомен/URL-адрес), к которой она относится. Посмотрите на session_set_cookie_params() и в целом прочитайте этот раздел руководства PHP, чтобы понять, как работают сеансы.

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