我想知道在其父文件中声明的包含文件中使用变量的最佳选项是什么。
当我想检查包含文件中的权限时,因为我不想将整个功能复制到我想检查权限的任何文件。
我尝试了几种方法。哪个是最好的,还是我应该采用另一种方式?
只包括:
<?php
// head file
$userlevel = 2;
$minimumlevel
include('testprivileges.php');
?>
<?php
// testprivileges file
if ($userlevel < $minimumlevel){
die('no privileges');
}
或
<?php
//head file
$userlevel;
$minimumlevel
include('checkprivileges.php?userlevel=$userlevel&minimumlevel=$minimumlevel');
// i dont care this wont work. you understand what I try to do
?>
<?php
$userlevel = $_GET['userlevel'];
// and check for privileges
?>
或
<?php
// testprivileges function file
function testprivileges($userlevel, $minimumlevel){
if($userlevel < $minimumlevel){
die('no privileges');
}
}
?>
<?php
//head file
$userlevel = 2;
$minimumlevel = 3;
include('testprivilegesfile.php');
testpriviles($userlevel, $minimumlevel);
?>
或所有这些选项都不好?
答案 0 :(得分:1)
您的第一个代码是有效的,也是最佳实践。
你的第二个例子很糟糕,因为:
include('checkprivileges.php?userlevel=$userlevel&minimumlevel=$minimumlevel');
无法工作。
您的上一个代码也是一种不好的做法,因为您必须将相同的功能复制粘贴到每个文件。不仅是代码重复,而且难以管理。
就像我说的,第一个代码效果最好。
但有些注意事项:
$ userlevel 应该来自高处。您不必在每个文件中重新声明它。只需在全局config.php中设置一次。
$ minimumlevel =当前页面的最低级别?
理想代码:
<?php
$minimumlevel = 1;
require_once ('includes/config.php'); // Contains $userlevel
Checkrights($minimumlevel);
?>
functions.php
function Checkrights($minimumlevel){
global $userlevel;
if ($userlevel < $minimumlevel){
die('no privileges');
}
}
<强>的config.php 强>
require_once ('functions.php');
$userlevel = 2;
如果您真的进入了更好的权限系统,您可能希望在本教程中了解按位权限系统。我自己使用它非常简单。如果在SQL中创建包含某些权限的新表,则可以为每个sé的PER模块授予权限。强烈推荐。
http://www.php4every1.com/tutorials/create-permissions-using-bitwise-operators-in-php/
答案 1 :(得分:0)
如果您要使用它,只需在文件的开头加入。
<?php
include("testprivileges.php");
//use to check privilege
?>