一段校验权限的代码的,一种是在登录时一次性读取所有的权限,并存到SESSION中,需要校验时,再进行比对,另一种是在需要校验时再查询数据库进行比对,应该使用那一种方式呢?
方式一代码:
$sql="select * from admin_empower where u_id=$uid";
$result=$db->query($sql);
$row=$result->fetch_assoc();
$_SESSION['empower']=$row;
在需要进行校验时,调用校验函数:
function ReadEmpower($power){
return $_SESSION['empower']['em_news']; //值只有1或0
}方式二不需要事先读权限表,只需要在进行校验时,调用校验函数来查表:
function ReadEmpower($power){
$sql="select $power from admin_empower where u_id=$uid";
$result=$db->query($sql);
$row=$result->fetch_assoc();
return $row[power];
}假定有十个管理功能,就有十种权限,这样一来,使用那种方式好呢?
方式一代码:
$sql="select * from admin_empower where u_id=$uid";
$result=$db->query($sql);
$row=$result->fetch_assoc();
$_SESSION['empower']=$row;
在需要进行校验时,调用校验函数:
function ReadEmpower($power){
return $_SESSION['empower']['em_news']; //值只有1或0
}方式二不需要事先读权限表,只需要在进行校验时,调用校验函数来查表:
function ReadEmpower($power){
$sql="select $power from admin_empower where u_id=$uid";
$result=$db->query($sql);
$row=$result->fetch_assoc();
return $row[power];
}假定有十个管理功能,就有十种权限,这样一来,使用那种方式好呢?
if(!$temp)
{
$sql="select $power from admin_empower where u_id=$uid";
$result=$db->query($sql);
$row=$result->fetch_assoc();
$temp=$row[$power]
}return $temp
}
我一般也是这样做的。这样做安全/准确/方便
<?php
class runtime
{
var $StartTime = 0;
var $StopTime = 0;
function get_microtime()
{
list($usec, $sec) = explode(' ', microtime());
return ((float)$usec + (float)$sec);
}
function start()
{
$this->StartTime = $this->get_microtime();
}
function stop()
{
$this->StopTime = $this->get_microtime();
}
function spent()
{
return round(($this->StopTime - $this->StartTime) * 1000, 1);
}
}//例子
include("conn.php");
$sql="select * from admin_empower";
$results=$db->query($sql);
$row=$results->fetch_assoc();
$runtime= new runtime;
$runtime->start();
//你的代码开始
for($i=0; $i<10000; $i++)
{
$_SESSION['x']=$row;
//$db->query($sql);
}
//你的代码结束
$runtime->stop();
echo "页面执行时间: ".$runtime->spent()." 毫秒";
echo $_SESSION['x']['u_id'];
?>