0

我正在使用我的应用程序处理安全级别,并且我编写了一个简单检查的函数 - 取决于它的会话用户 ID,他/她拥有什么样的权限。它工作正常,但在某些页面中,如果用户是超级用户,我想输出一些信息,如果用户是访客,则禁止输出信息。

我用这样的语法来做:

1. <? if admin('superuser', $_SESSION['user_id'])  { ?>
2. <div></div>
3. <? } ?>

它工作得很好,但它并不优雅,如果花括号之间的代码很长,它会破坏我的代码的纯度。有没有办法将第 1 行和第 3 行“别名”为某种快捷方式,即

1. <? admin_superuser ?>
2. <div></div>
3. <? admin_super_user_end ?>

也许您有其他想法来执行这种级别的安全性?

这个想法来自 ob_start() 和 ob_end() 命令。我在等你的想法。

卡雷格。

4

3 回答 3

4

你可以简单地在页面的开头设置一个布尔值:

$isSuperUser = admin('superuser', $_SESSION['user_id']);

然后,做

<? if ($isSuperUser) { ?>
<div></div>
<? } ?>

如果你不喜欢 $,你可以定义一个常量:

define("SUPERUSER", admin('superuser', $_SESSION['user_id']));

然后,做

<? if (SUPERUSER) { ?>
<div></div>
<? } ?>

常量的好处是它是全局的,如果在函数中使用,你不必先声明它是全局的,或者将它作为参数传递。

于 2012-04-18T20:26:17.113 回答
3

我会选择这样的东西。我认为这完全可以接受。
为了简化它,您只需要为您的用户提供一个包装器。

<?php if ($user->isAdmin()): ?>
<div></div>
<?php endif; ?>
于 2012-04-18T20:24:54.457 回答
2

您可以使用“包含”功能包含另一个包含相应 html / php 代码的 php 文件。我还建议使用xml 和 ini 设置<?php而不是仅仅<?由于短的打开标签问题。

于 2012-04-18T20:26:34.007 回答