新手问题,但我想知道我是否在这里缺少一些基本的东西。
如果我在页面中注册一个会话变量 - 这个变量是不是应该可以从同一站点上的另一个页面访问?
首先,我在文件session_var_register.php中注册一个变量:
<?php
$_SESSION["myusername"] = 'user';
if (isset($_SESSION['myusername'])) {
echo 'Session var myusername is set to '.$_SESSION['myusername'];
}
?>
当我打开此页面时,它写道:
Session var myusername is set to user
正如所料。
然后我打开另一个标签和另一个页面,check_session_var.php:
<?php
if (isset($_SESSION['myusername'])) {
echo 'Session var myusername is set to '.$_SESSION['myusername'];
}
?>
此页面为空白。
会话变量是否应该在浏览器会话中可访问,直到会话以编程方式销毁或浏览器关闭?
我正在使用IE 8和Firefox 24,顺便说一句。相同的结果。
答案 0 :(得分:2)
你忘记了
session_start()
在使用
之前$_SESSION
PS:请记住在您要使用的每个页面中调用 session_start() $ _ SESSION 。
答案 1 :(得分:2)
PHP文档声明必须调用session_start()来启动或恢复PHP会话。必须在尝试访问或使用会话变量之前完成此操作。阅读更多here。
session_start();
答案 2 :(得分:0)
首先在该页面上开始会话
session_start();
你的网页就像这样
<?php
session_start();
if (isset($_SESSION['myusername'])) {
echo 'Session var myusername is set to '.$_SESSION['myusername'];
}
?>
答案 3 :(得分:0)
您的会话变量将在同一网站的不同页面上提供,但在每个页面的顶部,您必须至少拥有:
session_start();
它有效,但并非在所有情况下都有效。您还必须在所有页面上使用相同的会话名称(实际上是存储会话ID的cookie名称)。此外,cookie(对于会话来说是必不可少的(主要))可能只在特定目录中可见。因此,例如,如果您与其他使用会话的人共享同一个主机,您不希望看到他们的变量,反之亦然,所以您可能想要这样:
1) session_name( 'my_session_id' );
2) session_set_cookie_params( 0, '/my_dir', $_SERVER['HTTP_HOST'], false, true );
3) session_start();
您可能还希望在其他服务器上看到您的会话变量,在这种情况下,自定义会话处理程序可能很有用。花一两天时间来实现自己 - 理解会话如何工作的好方法因此我推荐。
答案 4 :(得分:0)
方式强>
session_start();
<强>描述强>
session_start()根据会话标识符&gt;创建会话或恢复当前会话,通过GET或POST请求传递,或通过cookie传递。
在您的案例中使用(在大多数情况下):
把它放在$_SESSION
用法之前。
参考: session_start()