出于安全原因,register_globals
设置为关闭。
这很糟糕,因为现在我真的可以使用会话了。
你们如何解决这个“问题”?
更新
我尝试过使用$ _SESSION,但它没有用。这就是为什么我认为它与register_globals
关闭有关。
在我的头文件中,我有以下代码:
session_start();
if (!isset($_SESSION['test'])) {
$_SESSION['test'] = "Foo bar";
现在,在我的头文件中的任何地方,我都可以输出$_SESSION['test']
。
但是我无法从例如输出相同的内容page.php文件。
以下是使用Wordpress的示例:example.php
//Include the header file
<?php get_header(); ?>
Here is some text, and this is my session: <?php echo $_SESSION['test']; ?>
<?php get_footer(); ?>
这将导致会话空白。
答案 0 :(得分:5)
使用$ _SESSION,请参阅http://php.net/manual/en/session.examples.basic.php
答案 1 :(得分:3)
使用超全局$ _SESSION数组来存储值。它的内容存储在请求之间,并且无缝地序列化和反序列化 - 不用担心存储对象或数组。一个简单的例子:
<?php
if (isset($_SESSION['user'])) {
// user already logged in
} else {
// Create a guest user
$user = new stdClass();
$user->name = 'guest';
$user->id = 0;
$_SESSION['user'] = $user;
}
?>
答案 2 :(得分:2)
如果您使用 faceook 应用中的 iframe ,您的会话可能无法在 IE 和 safari 中使用。
要使其在这两种浏览器中都可用,请使用下面的标题代码,位于 session_start();
header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"'); // Require to maintian session in IE
header('P3P:CP="IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT"'); // Require to maintain session in safari
答案 3 :(得分:1)
所有会话变量都在$_SESSION
array中。使用$_SESSION['var']
代替全局注册的$var
。
答案 4 :(得分:1)
如果会话不起作用,有几件事需要检查:
session_start()
- PHP.ini中有一个可以切换的选项(session.auto_start
)。session.save_path
是否指向可写的有效位置 - 检查权限。在Windows下,默认设置是该平台的无效路径。您可以查看前面提到的session.save_path
来检查是否正在创建会话文件。
我假设使用默认的基于文件的会话处理程序。如果使用其他东西(需要额外配置),则可能会有进一步的故障排除步骤。
答案 5 :(得分:0)