0

我将以下代码与成员脚本结合使用,该脚本在页面上显示成员用户名或要求客人登录或注册。

PHP代码:

if ($_SESSION['username'])
{
echo "".$_SESSION['username'].", you are logged in.<br><small><a href=\"logout.php\">Click here to logout</a></small>";
}
else
echo "Welcome Guest!<br><small><a href=\"login.php\">Login</a> or <a href=\"register.php\">Register</a></small>";

它工作得很好,尽管现在我想修改它,所以如果具有管理员权限的用户登录它会识别用户名并提供指向管理页面的链接。

所以这是我修改后的代码:

<? php
$validateadmin = $_SESSION['username'];
if ($validateadmin == "admin1" or $validateadmin == "admin2")
  {
echo "Hello $validateadmin, you have <a href=\"admin.php\">admin</a> privileges.<br><small><a href=\"logout.php\">Click here to logout</a></small>";
  }
else if ($_SESSION['username'])
  {
echo "".$_SESSION['username'].", you are logged in.<br><small><a href=\"logout.php\">Click here to logout</a></small>";
 }
else
  {
echo "Welcome Guest!<br><small><a href=\"login.php\">Login</a> or <a href=\"register.php\">Register</a></small>";
 }
 ?>

知道我做错了什么吗?它要么给我留下空白页,要么留下错误。我知道这可能是一个新手错误,但对于我的生活,我不知道出了什么问题。

4

2 回答 2

2

通常,您应该在 php 中使用 elseif 而不是“else if”,因为 php 解析器会将 else if 解释为 else { if { .... }} 并且您可能会遇到一些奇怪的错误。

此外,始终在控制语句中使用大括号以避免悬空子句是一种很好的做法。

另外,为了避免有关数组索引的通知,如果索引可能不存在,请不要执行 if($array[$index]) 之类的检查。使用任何 array_key_exists、isset、empty 等(它们都略有不同)来检查数组是否包含您要查找的键。

于 2013-04-03T23:30:11.680 回答
0

尝试以下

<?php #removed space
session_start(); #you will need this on all pages otherwise remove it if already called
$validateadmin = $_SESSION['username'];

if($validateadmin == "admin1" || $validateadmin == "admin2"){
    echo "Hello $validateadmin, you have <a href=\"admin.php\">admin</a> privileges.<br><small><a href=\"logout.php\">Click here to logout</a></small>";
}elseif(isset($_SESSION['username'])){ #you should use isset to make sure some variable is set
    echo $_SESSION['username'].", you are logged in.<br><small><a href=\"logout.php\">Click here to logout</a></small>";
}else{
    echo "Welcome Guest!<br><small><a href=\"login.php\">Login</a> or <a href=\"register.php\">Register</a></small>";
}
?>
于 2013-04-03T23:32:27.343 回答