我正在开发一个使用PHP的门户网站,并且需要实现一个简单的PHP身份验证系统,该系统根据用户凭据限制访问某些页面。通过身份验证保护网页
我有一个函数CheckAuth()需要一个参数(整数)。也就是说,我的数据库有五个授权级别1-5。如果我调用CheckAuth(3),如果用户的授权等级为3或以上,则返回true。我的代码,现在读:
if(!CheckAuth(3) {
die("Sorry, we were unable to deliver the requested content.");
}
这种解决方案的问题是,它会破坏页面的布局,作为其他元素,如页面的页脚将不显示。
有条件地只显示页面的一部分的最佳方式是什么?
在此先感谢! 达里奥
function CheckAuth() {
require("config.php");
//User ain't been logged in?
if(!isset($_SESSION["login"])) {
return 0;
}
//Alright user is logged in, lets check the level...
//1 = User, 2 = OP (or Admin)
$query = "SELECT * FROM delegations WHERE id=" . $_SESSION["login"];
$results = mysqli_query($con, $query);
while($row = mysqli_fetch_array($results)) {
return $row["Level"];
}
}
这个问题可能会派上用场:http://stackoverflow.com/questions/1181105/how-safe-are-php-session-variables请注意,控制会话变量中的身份验证可以被操纵 –
如果你正在添加进一步的代码将不会执行。你可以尝试echo而不是 – 2013-07-24 17:05:23
嗨达里尔,谢谢,我会看看你的链接。这是一个小项目,本质上登录主要是为正确的人提供正确的内容,以便不会意外地编辑其他人的内容,但没有“敏感”或“有价值”的信息,因此不太可能有人会想要违反该网站。基本安全是行动中(即:防止SQL注入等) – MrD