使用PHP分配新会话时无法获取上一个会话

时间:2017-04-13 01:11:53

标签: php ajax session

我正在尝试使用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 }值。我需要直到会话没有销毁我应该获得所有会话密钥值。

1 个答案:

答案 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

顺便说一句,如果您确定要注销或类似这样的话,每次关闭(销毁)它就可以非常有用地启动(重建)会话。