Php 在$\u上设置$\u会话无法工作
我需要获取Php 在$\u上设置$\u会话无法工作,php,session,get,Php,Session,Get,我需要获取$\u get['id\u 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
$\u get['id\u 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\u dump($\u GET)
输出:
array(1) { ["id_item"]=> string(2) "50" }
知道为什么未保存$\u会话
吗?修复此问题:
$\u会话['id\u item']==''
到$\u会话['id\u item']==''
或者您可以使用:
empty($_SESSION['id_item'])
在
启动会话之前,您是否输出了任何内容。如果是这样,它将无法发送cookie。这可能就是它不起作用的原因。除非您希望(有效)ID为0
,否则您可以减少!isset($_会话['id_item'])|$_会话['id_item']===''
到空($_会话['id_item'])
)<代码>$_GET['id\u item']==''
始终为false,因为这将转换为false==''
。您可能正在查找$\u GET['id\u item']!=''代码>。同样,如果0
不是有效值,您可以选择!空($\u GET['id\u item'])
此处
也就是说,整个!isset($_SESSION['id_item'])|$_SESSION['id_item']==''
条件的一部分没有多大意义。第二部分“if _GetID_item present”(如果_GetID_item present)对于条件主体(会话['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]);
var\u转储($\u会话)的结果是什么代码>你也忘记了;在您提供的代码的最后一行。您能回显$\u GET['id\u item']吗?看看它是空的还是空的not@RobinVanPersithevar_dump显示它不是空的,它不是cookie,它是会话var!服务器向浏览器发送cookie,以便将来的页面知道要在会话数据存储中查找哪个会话。Reade解释Cookie和会话之间的关系。PHPSESSID是cookie的名称(通常),我稍微编辑了一下这个问题。您的答案对第一个get值有效,但在下一个get值中,s_会话保持为空