我正在尝试使用PHP存储会话。但是当我试图存储新的会话值时,在存储之后我无法获得之前的会话值。我在下面解释我的代码。
ring
这里我试图将cat_data存储到会话中,下面给出了php代码。
id=17;
var url="common.php?action=savecid";
$.post(url,{"cat_data":id},function(data){
var obj=JSON.parse(data);
console.log('catdata',obj);
})
上面的控制台输出为if($action=='savecid'){
$id=$_POST['cat_data'];
session_start();
//if(isset($_SESSION['cid']) && !empty($_SESSION['cid'])){
if(array_key_exists('cid',$_SESSION) && !empty($_SESSION['cid'])) {
//unset($_SESSION['cid']);
session_unset('cid');
$_SESSION['cid']=$id;
$flag="true";
}else{
$_SESSION['cid']=$id;
$flag="false";
}
$result=array("isData"=>1,"cid"=>$_SESSION['cid'],"flag"=>$flag);
echo json_encode($result);
}
。这里我可以存储值并获取。我的第二个Ajax调用如下所示。
{ isData: 1, cid: Array[4], cat_id: "17" }
这里我试图使用下面的PHP代码使用不同的密钥存储另一个id。
sid=20
var url="common.php?action=setsubcatid";
$.post(url,{"subcat_data":sid},function(data){
var obj=JSON.parse(data);
console.log('subdata11',obj);
})
这里我也试图返回先前存储的id(if($action=='setsubcatid'){
$id=$_POST['subcat_data'];
$cat_id=$_SESSION['cid'];
session_start();
if(array_key_exists('subcat_id',$_SESSION) && !empty($_SESSION['subcat_id'])) {
//unset($_SESSION['cid']);
session_unset('subcat_id');
$_SESSION['subcat_id']=$id;
$flag="true";
}else{
$_SESSION['subcat_id']=$id;
$flag="false";
}
$result=array("isData"=>1,"subcat_id"=>$_SESSION['subcat_id'],"flag"=>$flag,'cat_id'=>$cat_id);
echo json_encode($result);
}
)但是在相应的控制台中我得到了这个i.e-$_SESSION['cid']
。在这里,我无法获得先前存储的subdata11 Object { isData: 1, subcat_id: "20", flag: "true", cat_id: null }
值。我需要直到会话没有销毁我应该获得所有会话密钥值。
答案 0 :(得分:0)
<?php
session_name('mySession');
// this helped in my case to set the cookie and use it in js
session_start();
...
switch($action) {
case 'todo':
// do anything;
break;
default:
echo 'you have no rights, the session will be terminated now';
session_write_close();
$_SESSION = [];
}
// session is not longer available here
顺便说一句,如果您确定要注销或类似这样的话,每次关闭(销毁)它就可以非常有用地启动(重建)会话。