2013-04-03 38 views
0

我是一个PHP新手,所以请裸露在我身边...PHP新手帮助:其他如果 - 我做错了什么?

我有以下代码,我与会员脚本一起使用显示成员用户名页面或要求客人登录或注册。

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>"; 
} 
?> 

任何想法是我做错了什么?它要么给我留下了一个空白页或错误。 我知道这可能是一个新手的错误,但对于我的生活,我不知道什么是错的。

任何帮助将非常感激!

+0

你看到什么错误? – Tchoupi 2013-04-03 23:27:30

+2

你的开放php标签有一个空格'<? php'。这是一个错字吗? – Tchoupi 2013-04-03 23:29:00

+0

当不需要更多处理时,为什么不退出(0)? (你不要,然后写一连串的悲剧事件;)...) – Ihsan 2013-04-03 23:31:02

回答

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>"; 
} 
?> 
+0

谢谢Class !,这是一个巨大的帮助,并完美地工作。我只需要删除session_start,因为它已经在我的header.php模板的顶部被调用了。非常感谢!!! – HollyT9 2013-04-04 06:57:10

2

一般来说,你应该在php中使用elseif而不是“else if”,因为php解析器会解释别的if if else {if {....}}并且你可能有一些奇怪的错误。

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

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

+0

感谢您的建议。 – HollyT9 2013-04-04 07:03:32