我尝试制作导航栏。
/* Only for admin */
function getAccessRights($links) {
if ( isset($_SESSION['right']) && $_SESSION['right'] === ACCESS_ADMIN ||
isset($_COOKIE['right']) && $_COOKIE['right'] === ACCESS_ADMIN ) {
$links[] = '<li><a href="messages.phtml">Read messages</a></li>';
var_dump($links); // **Back, Login, Read messages.**
return $links;
}
}
function drawNavBar() {
if ( $_SERVER['PHP_SELF'] == "/form-msg.php" ) {
$links[] = '<li><a class="back" href="index.php">Back</a></li>';
$links[] = '<li><a href="admin.php">Login</a></li>';
getAccessRights(); // I dont know what access have user. If he have admin access, he will see link "read messages".
var_dump($links) // **Back, Login**
}
//some if
makeNavBar($links); //makeNavBar it is function which do pattern for html
}
哪里链接“阅读邮件”?也许你知道一个更好的方法来制作导航栏。
答案 0 :(得分:1)
我会做这样的事情:
//returns true or false based on user rights
function isAdmin() {
return (isset($_SESSION['right']) && $_SESSION['right'] === ACCESS_ADMIN || isset($_COOKIE['right']) && $_COOKIE['right'] === ACCESS_ADMIN)
}
function drawNavBar($links = array()) {
if ( $_SERVER['PHP_SELF'] == "/form-msg.php" ) {
$links[] = '<li><a class="back" href="index.php">Back</a></li>';
$links[] = '<li><a href="admin.php">Login</a></li>';
if(isAdmin())
$links[] = '<li><a href="messages.phtml">Read messages</a></li>';
var_dump($links) // **Back, Login**
}
//some if
makeNavBar($links);
}
答案 1 :(得分:1)
链接是getAccessRights()
方法的返回值,但是您调用此方法忽略返回值。此外,getAccessRights()
需要参数$links
,但您不会传递参数。
BTW:您可以通过$_COOKIE
变量中的标志来确定用户的管理员状态。这是高度不安全。 $_COOKIE
变量包含客户端cookie中发送的所有内容。这意味着用户可以修改cookie的内容(并通过编辑自己的cookie使自己成为管理员)。
答案 2 :(得分:0)
在函数drawNavBar
$links[] = getAccessRights();
在函数getAccessRights
$links = array();
$links[] = '<li><a href="messages.phtml">Read messages</a></li>';
return $links;
顺便说一句..函数getAccessRights
的命名是不对的,我会尝试
使用更通用的权限管理方法,例如Access control list。