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

时间:2014-04-23 03:50:46

标签: php session-cookies

我正在尝试在调用提交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]";

?>

我在第一页上得到echo $_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即将来临&#34;&#34; (没有数据/ null)实际上我得到了回应。

我迄今为止所做的一点历史

  • php.ini文件中未启用session.save_path,因此我启用了它。

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

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

您能否建议为了获得会话cookie数据需要做些什么:

  1. 已保存&amp;在文件中的磁盘上可用
  2. 在处理第2页时使其可用。
  3. 提前感谢您,我会记录您的时间和意见。

3 个答案:

答案 0 :(得分:0)

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

所以page2将是

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

答案 1 :(得分:0)

尝试使用:

对于page1.php

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

对于page2.php

<?php

  session_start();
  echo $_SESSION['cname'];

?>

您必须在每个要调用会话数据的页面上使用session_start()。

答案 2 :(得分:0)

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

感谢您的评论。