PHP如何基于会话显示页面?

时间:2015-06-25 20:03:21

标签: php session

我正在建立一个网站。其中大部分都可供访问该网站的任何人使用,但其中一小部分需要您注册才能查看。我已使用Sessions设置登录。有人登录后,会设置:

$_SESSION['login'] = TRUE;

在其中一个独家页面中,在内容之前的代码顶部,我写了

if ($_SESSION['login'] == FALSE) {
    header("loginpage.php");
}

但是,如果某人未登录,则该变量不存在,并且最终出现错误。有没有其他方法来检查是否有人登录?我想要一些类似于我已经拥有的东西,因为我不想改变一切。

4 个答案:

答案 0 :(得分:0)

ssh A/B/C/D

答案 1 :(得分:0)

您可以使用isset函数来确定变量是否已设置且不为空。

if (!isset($_SESSION['login']) || $_SESSION['login'] == FALSE) {
    //user isn't logged in
    header("loginpage.php");
}else{
    //user is logged
}

检查manual

答案 2 :(得分:0)

您是否有一个始终在每个页面执行之前运行的脚本?如果没有,这是设置任何效用函数或初始化变量的好地方,例如$_SESSION['login']。您可以在那里为$_SESSION['login']设置默认的false值。然后你有一个可靠的默认值,这对于一个非常重要的变量是一个很好的做法,就像这个。

您可以使用它来检查它是否已设置并指定默认值:

//Right after starting the session
if (!isset($_SESSION['login'])) {
    $_SESSION['login'] = false;
}

如果它已经有值,则会跳过此值。

如果您想使用变量,也可以在变量之前添加@,但无法确定它是否存在。这将禁止有关变量存在的警告,但我认为最好知道默认值应该是什么。有时候获取这些警告很有用。

答案 3 :(得分:0)

简单的解决方案:在您网站的第一页(或第一个脚本)中,使用值" false"创建会话变量。 :

<?php
session_start();
$_SESSION['login'] = FALSE;
?>

并且,在成功登录后,您将值更改为TRUE(正如您已经在做的那样):

$_SESSION['login'] = TRUE;

这样会话变量将始终存在,并且你不会遇到&#34; unset&#34;变量