会话数据未保存在磁盘上,处理其他页面时也未保存


Session data not saved on disk and also when processing another page

当调用提交page1.php时,我正在尝试处理简单的HTML表单。page1.php内部调用page2.php

page1.php如下所示:

<?php 
session_start(); 
$sesid = session_id();
$_SESSION['cname'] = @trim(stripslashes($_POST['companyname'])); 
$_SESSION['fname'] = @trim(stripslashes($_POST['firstname'])); 
$_SESSION['lname'] = @trim(stripslashes($_POST['lastname'])); 
$_SESSION['eaddr']  = @trim(stripslashes($_POST['eaddress'])); 
echo " $_SESSION[cname]" ;
echo " $_SESSION[otprdsvc]";
include_once $_SERVER['DOCUMENT_ROOT'] .'/appconnector.php';
?>  

Page2.php如下所示:

<?php
echo "$_SESSION[cname]";
?>

我确实在第一页上得到了回声$_SESSION[cname];的输出。但是,当我检查会话cookie时,数据不会保存到磁盘。

以下是来自磁盘上会话cookie的数据:

  cname|s:0:"";fname|s:0:"";lname|s:0:"";eaddr|s:0:"";webaddr|N;cmsg|s:0:"";drpopt|N;otprdsvc|s:0:"";securimage_code_disp|a:1:{s:7:"default";s:6:"n55Zmr";}securimage_code_value|a:1:{s:7:"default";s:6:"n55zmr";}securimage_code_ctime|a:1:{s:7:"default";i:1398221627;}

我不明白为什么cname是"(无数据/空),而事实上我得到了响应。

一点点历史我做了什么到现在

  • session.save_path之前没有在php.ini文件中启用,所以我启用了它。

  • 我之前在html格式中使用autocomplete = off,所以我删除了它

securimage是我用于captcha的打包解决方案,它保存cookie数据,但我不知道+不了解它在内部做了什么。

你能建议一下需要做什么才能获得会话cookie数据吗:

  1. 已保存&在文件中的磁盘上可用
  2. 在处理page2时使其可用

提前谢谢你,我很感激你的时间和评论。

在使用$_SESSION变量之前,您必须始终在每页上执行session_start();

所以第2页将是

<?php
   session_start();
   echo "$_SESSION[cname]" ;
?>

尝试使用这个:

对于page1.php

....
    echo $_SESSION['cname'];
    echo $_SESSION['otprdsvc'];
....

对于page2.php

<?php
  session_start();
  echo $_SESSION['cname'];
?>

无论您想在哪里调用会话数据,都必须在每个页面上使用session_start()。

我已经解决了这个问题。Page2.php正在提交自己,因此会话数据丢失。我现在已经修改了数据处理流程。在将数据写入page1.php上的会话变量后,我还使用了session.write_close(),因此这也有所帮助。

感谢您的评论。