我正在建立一个网站。其中大部分都可供访问该网站的任何人使用,但其中一小部分需要您注册才能查看。我已使用Sessions设置登录。有人登录后,会设置:
$_SESSION['login'] = TRUE;
在其中一个独家页面中,在内容之前的代码顶部,我写了
if ($_SESSION['login'] == FALSE) {
header("loginpage.php");
}
但是,如果某人未登录,则该变量不存在,并且最终出现错误。有没有其他方法来检查是否有人登录?我想要一些类似于我已经拥有的东西,因为我不想改变一切。
答案 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;变量强>