2013-08-14 2 views
0

Я думаю, что у меня нет чего-то очевидного. У меня сеанс начался на самой верхней части моей страницы. Ниже у меня есть следующий код. Параметр var dump out помещает "one", когда он отображается с запрашиваемой страницы. После обновления var dump out помещает NULL. Почему это не спасается?

if($_REQUEST["page"] == 1) { 
    $_SESSION["one"] = true; 
} 

var_dump($_SESSION["one"]); 
+0

Откуда возникает переменная $ _REQUEST ["page"]? – aarryy

+0

Добавили ли вы session_start() до этого? – Anigel

+0

это часть url 'www.example.com/index.php? Page = 1' –

ответ

0

Если у вас есть session_start() в верхней части страницы, как вы утверждаете, то ваш код не должен выглядеть примерно так:

session_start(); 

if($_REQUEST["page"] == 1) { 
    $_SESSION["one"] = true; 
} 

var_dump($_SESSION["one"]); 

Это должно 100% работы, не вопрос. Есть что-то еще, что мешает этому работать в вашем коде, который вы не предоставили. Мое первое предположение было бы разрушением какого-либо сеанса.

0

Прежде всего, вам необходимо убедиться, что вы начали сеанс перед тем, как попытаться его использовать. Во-вторых, рекомендуется указывать POST или GET вместо общего использования REQUEST. Если вы хотите поддержать либо GET или POST, вы можете сделать что-то вроде этого:

// Begin Session Management 
session_start(); 

// Check both GET and POST for the parameter 
if($_GET['page'] == 1 || $_POST['page']) { 
    // Modify the session 
    $_SESSION["one"] = true; 
} 

// See what we ended up with in the session. 
var_dump($_SESSION["one"]); 

Это работает для меня, но я использую кэша памяти, как мой обработчик сеанса сеанса. Проверьте свой собственный обработчик сеанса в php.ini и убедитесь, что обработчик сеанса работает правильно. Кроме того, убедитесь, что вы закрываете сессию должным образом, если вы перенаправляете, устанавливаете новое местоположение или выходите необычным образом.

+0

OP говорит, что он включил 'session_start()', поэтому ваш код точно такой же с точки зрения логики, как и то, что он в настоящее время имеет, что не работает. –

+0

И все-таки, как-то, ответ на час позже моего, с тем же кодом и несколько разными словами, был выбран как «правильный» ответ. – bubba