Intereting Posts

на $ _GET установить $ _SESSION не будет работать

Мне нужно получить последнее непустое значение, которое $_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 не сохраняется?

почини это:

$_SESSION['id_item']=='' to $_SESSION['id_item']===''

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

 empty($_SESSION['id_item']) 

если вы не ожидаете, что (действительный) ID будет 0 вы можете уменьшить !isset($_SESSION['id_item']) || $_SESSION['id_item']==='' !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']==='' !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]); 

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