PHP会话变量生命

时间:2013-10-07 12:21:56

标签: php session

新手问题,但我想知道我是否在这里缺少一些基本的东西。

如果我在页面中注册一个会话变量 - 这个变量是不是应该可以从同一站点上的另一个页面访问?

首先,我在文件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,顺便说一句。相同的结果。

5 个答案:

答案 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()