我正在处理我的应用程序的安全级别,我编写了一个简单检查的功能 - 取决于它的会话用户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()命令。 我在等你的想法。
Kalreg。
答案 0 :(得分:4)
您只需在页面开头设置一个bool:
$isSuperUser = admin('superuser', $_SESSION['user_id']);
然后,就这样做
<? if ($isSuperUser) { ?>
<div></div>
<? } ?>
如果你不喜欢$,你可以定义一个常量:
define("SUPERUSER", admin('superuser', $_SESSION['user_id']));
然后,就这样做
<? if (SUPERUSER) { ?>
<div></div>
<? } ?>
关于常量的好处是它是全局的,如果在函数中使用,则不必先将其声明为全局,或将其作为参数传递。
答案 1 :(得分:3)
我会选择这样的东西。我认为这完全可以接受 为了简化它,您只需要为您的用户提供一个包装器。
<?php if ($user->isAdmin()): ?>
<div></div>
<?php endif; ?>
答案 2 :(得分:2)
你可以包含另一个php文件,其中包含带有“include”功能的相应html / php代码。我还建议使用<?php
而不是<?
因xml和ini设置而导致的短期开放标记问题。