已经构建了一个登录系统,我可以为用户分配权限,让他们可以访问页面,一切正常。目前,如果用户已登录并具有权限,则显示内容,如果未登录,则重定向到登录页面。
我正在尝试添加重定向,这样如果您已登录但没有权限,则会将您带到包含该产品信息的页面。
我目前将其设置为:
<?php
if (!securePage($_SERVER['PHP_SELF'])){die();}
$parts = parse_url($_SERVER["REQUEST_URI"]);
$page_name = basename($parts['path']);
//Links for logged in user
if(isUserLoggedIn()) {
//Links for permission level 3 (BOF)
if ($loggedInUser->checkPermission(array(3))){
*do something*
(more code)
<div id='default'>
<?php } else { ?>
*login*
我知道我可以通过并说'#34;如果不是这样的许可,那就这样做&#34;但我目前拥有超过20个权限并且正在攀登。我正在尝试这样的事情:
if ($loggedInUser <> 3){
header( 'Location: http://www.yoursite.com/new_page.html' ) ;
}
然而它解析但没有显示任何结果,我猜测它与变量为空有关?
有关最佳锻炼的任何想法吗?
答案 0 :(得分:1)
好像你混合了对象和变量。
判断
($loggedInUser->checkPermission(array(3)))
$ loggedInUser应该是一个对象。
但是你试着用一个整数来比较一个对象。可能是,你忘了一个方法?像Smth一样
if($loggedInUser->id!=3)
答案 1 :(得分:0)
打开错误报告并检查是否有任何错误 检查输出中的BOM字符......它们可以防止重定向 除此之外,我想不出任何其他事情来帮助你
EDIT1:帮助调试 var_dump()你的变量并检查你得到的类型(整数/字符串)。也许您需要使用===(如果$ a === $ b)更改if语句,它会检查值和类型
对于太多ifs ...你可以使用switch..case语句,更容易调试imo