PHP会话变量未保留

7 php session session-variables

我无法在设置它们的页面上使用会话变量,它们就像非会话变量一样.我在其他六个类似的论坛上发现了一个类似的问题,但在其他案例中的答案总是不适用.

这是我的文件:

sess1.php

<?php
session_start();

session_register("userid");
session_register("textvar");

$_SESSION['userid'] = 10333 ;
$_SESSION['textvar'] = TextVariable ;

echo "<p>User ID is: " . $_SESSION['userid'] . "</p>" ;
echo "<p>Another variable is: " . $_SESSION['textvar'] . "</p>" ;
?>
<p>Go to the <a href="sess2.php">next page</a>.</p>
Run Code Online (Sandbox Code Playgroud)

并且, sess2.php

<?php
session_start();

echo "<p>The userid session variable is: " . $_SESSION['userid'] . "</p>";
echo "<p>The other session variable is: " . $_SESSION['newvar']. "</p> ";
?>
Run Code Online (Sandbox Code Playgroud)

每种情况下的浏览器输出是:

sess1.php

用户ID是:10333

另一个变量是:TextVariable

转到[下一页].

并且, sess2.php

userid会话变量是:

另一个会话变量是:

转到[最后一页].

有些事情不是:

  • 我在两个文件的顶部都有session_start().
  • 变量目录是可写的,并且会话变量显示在那里.(我有大约一百个名为sess_b62的小文件,里面有这个:'userid | i:10333; textvar | s:12:"TextVariable";'.)
  • phpinfo()告诉我正在正确读取php.ini文件,并将生命周期设置为默认值0,即直到浏览器关闭.

我的智慧结束了.有什么建议?

非常感谢.

jon*_*ohn 7

session_register()不是必需的,可能会导致问题.阅读文档session_register()- 它旨在使用现有变量分配会话变量.

这里:

好吧,session_register()告诉PHP应该将某个全局变量视为会话变量.这意味着在脚本执行结束时(通常发生会话数据写入时),将使用当前启用的会话处理程序写入该全局变量的结果值.

我认为这是您遇到的问题.在脚本执行结束时,会话变量被覆盖.


Gum*_*mbo 2

必须以某种方式携带会话 ID,以便可以在多个页面上使用同一会话。一般来说,这是通过 cookie 完成的(请参阅 参考资料session.use_cookies),但也可以在 URL 或表单中完成(请参阅 参考资料session.use_trans_sid)。

因此,首先您必须确保传输会话 ID,以便 PHP 可以加载正确的会话和会话数据。

另请参阅我对 PHP 会话的理解是否正确?