无法将php会话变量设置为另一个php页面

时间:2014-04-18 13:19:12

标签: php mysql database

我无法在一个页面上将会话变量设置为另一个页面,我的代码在下面。

第一页

session_start();
header('Content-Type: application/json;charset=utf-8');

///mysql connections
while($row = mysql_fetch_array( $sthpre )){
// Print out the contents of each row into a table

$rows[] = $row; 
$_SESSION['id']=$row['id'];
print json_encode($row);

}//still i get null on the other page $_SESSION['id'] = 22;

第二页

session_start();
header('Content-Type: application/json;charset=utf-8');
$row['id']=$_SESSION['id'];
print json_encode($row);

2 个答案:

答案 0 :(得分:0)

试试:

  
    

在session_start();

         

session_regenerate();

         

标题(' Content-Type:application / json; charset = utf-8');

         

$行[' ID'] = $ _ SESSION [' ID'];     print json_encode($ row);

  

答案 1 :(得分:0)

根据您在每个页面中有不同会话ID的知识,我的猜测是,php尝试用来存储会话的目录不能由apache用户写入。如果您创建一个页面并放置:

session_save_path();

它会告诉你php在哪里尝试在服务器上写入会话信息。确保它显示给你的目录可由apache用户写入(很可能是www-data)。或者将其更改为可写的其他目录。您可以在代码中执行此操作:

session_save_path('/tmp');

或者您可以在php.ini文件中更改它。

如果这不是问题,而且是因为您的应用未维护一致的会话ID,则可以强制执行session_id。

session_start();
session_id('5468313'); //any random id

只需在两个文件中执行此操作,但是您需要为每个登录的人生成不同的会话ID,否则每个人都将共享同一个会话。