1

由于我们的网络服务器重新启动,PHP 会话不再工作。有几个人给了我有用的想法,但都没有奏效。我做了一个非常简化的例子,我很确定应该可以工作,但它不起作用。如果有人能解释为什么我将非常感激。到目前为止,我已经花了一整天的时间。

我的理解是 $_SESSION 应该是“超级全球”,这意味着它可以在任何地方使用。

为了清楚起见,我做了两个精简的重写页面,其中代码仍然不起作用,即打印“Hello World”。

如果有人能告诉我这有什么问题,我将不胜感激!

----------- 网页 ONE.PHP -----------------

<?PHP session_start(); ?>
<html>
<head>
<title>Page One</title>
</head><body>
<?PHP
     $_SESSION['testvalue'] = "Hello World";
?>
<p><a href="pagetwo.php">Click here</a> to see page two</p>
</body></html>

------------ 网页二.PHP -----

<?PHP session_start(); ?>
<html>
<head>
<title>Page Two</title>
</head><body>
<?PHP echo $_SESSION['testvalue']; ?>
<br>
</body></html>

我运行网页一并单击链接转到第二页,而不是显示“Hello World”的页面

注意:未定义索引:c:\inetpub\wwwroot\two.php 中的 testvalue

我检查了 C:\PROGRAMDATA\PHP\SESSIONS 并且那里有一个名为

sess_905m06314ibdubru8ko0aqj4d1

其中包含以下内容

testvalue|s:11:"你好世界";

这个文件是我跑one.php的时候创建的,说明app有权限写session信息

抱歉,如果我看起来很密集,但我只是不明白为什么这不起作用,并且花了一天的大部分时间试图弄清楚。

谢谢你。

4

2 回答 2

0

听起来会话没有被传播到第 2 页。您是否禁用了 cookie? http://ie1.php.net/manual/en/session.idpassing.php展示了如何在 URL 中传递 SID。试试看,然后看看你是否可以访问会话。检查浏览器中的 cookie 并在必要时执行 phpinfo() 以查看会话 ID。如果它在第 2 页上有所不同,那是你的问题。

于 2012-11-20T20:53:18.933 回答
0

尝试将会话存储到另一个目录中(您可以通过编辑 php.ini 来做到这一点):

session.save_path = "C:\php_session_test"

原因是因为 ProgramData 是 Windows 7 上的“特殊文件夹”,存在一些文件系统重定向(例如C:\Windows\System32C:\Windows\Sysnative...)。

请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187%28v=vs.85%29.aspx

于 2012-11-20T20:51:09.507 回答