在$ _GET设置$ _SESSION不会工作

时间:2012-02-26 12:28:47

标签: php session get

我需要获取$_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没有保存?

3 个答案:

答案 0 :(得分:1)

解决这个问题:

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

或者您可以使用:

empty($_SESSION['id_item'])

答案 1 :(得分: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']===''部分没有多大意义。第二部分“if _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]);

答案 2 :(得分:0)

您是否在start_session之前输出了任何内容。如果是这样,它将无法发送cookie。这可能就是它无法正常工作的原因。