2012-02-26 4 views
0

мне нужно, чтобы получить последний непустое значение, что $_GET['id_item'] было

session_start(); 

if(!isset($_SESSION['id_item']) || $_SESSION['id_item']==='' || (isset($_GET['id_item']) && !$_GET['id_item'] === '')){ 
    $_SESSION['id_item'] = $_GET['id_item']; 
}else{ 
    /*no need to update*/ 
} 

echo $_SESSION['id_item'] /* Allways in blank :S */ 

И var_dump($_GET) выходы:

array(1) { ["id_item"]=> string(2) "50" } 

Любая идея, почему $_SESSION не сохраняется ?

+0

Что является результатом 'var_dump ($ _ SESSION);' – xdazz

+0

Вы также забыла; в последней строке кода, который вы указали. – MichaelH

+0

Можете ли вы эхо $ _GET ['id_item']? см., если его пустой или нет. – SolidSnake

ответ

1

исправить это:

$_SESSION['id_item']=='' в $_SESSION['id_item']===''

или вы можете использовать:

empty($_SESSION['id_item']) 
+0

. Я немного изменил вопрос. вы отвечаете сработали для первого получения значения, но в следующем, s_session остается пустым –

0

У вас выход ничего перед start_session. Если это так, он не сможет отправить файл cookie. Вероятно, поэтому он не работает.

+0

это не cookie, его сеанс var! –

+0

Сервер отправляет куки-файлы в браузер, чтобы на будущих страницах он знал, какой сеанс нужно искать в хранилище данных сеанса. Reade http://www.htmlgoodies.com/beyond/php/article.php/3472581/PHP-Tutorial-Sessions.htm, чтобы объяснить взаимосвязь между куки-файлами и сеансами. PHPSESSID - это имя файла cookie (обычно) –

1

, если вы не ожидаете (действительный) ID 0, вы можете уменьшить !isset($_SESSION['id_item']) || $_SESSION['id_item']==='' до empty($_SESSION['id_item']). !$_GET['id_item'] === '' всегда false, так как это соответствует false === ''. Вероятно, вы искали $_GET['id_item'] !== ''. Опять же, если 0 не является допустимым значением, вы можете пойти здесь для !empty($_GET['id_item']).

Сказанное: целое !isset($_SESSION['id_item']) || $_SESSION['id_item']==='' часть условия не имеет смысла. Вторая часть «если _GET id_item present» всегда необходима для тела условия ($_SESSION['id_item'] = $_GET['id_item'];) для работы. Таким образом, вы можете уменьшить условие

<?php 
if (!empty($_GET['id_item'])) { 
    // import new id_item 
    $_SESSION['id_item'] = $_GET['id_item']; 
} elseif (!isset($_SESSION['id_item'])) { 
    // make sure we don't run into an undefined array index notice 
    $_SESSION['id_item'] = null; 
} 

var_dump($_SESSION['id_item]); 
Смежные вопросы