我写这段代码是为了读取登录用户的访问级别,因此,根据登录的用户的访问等级来保护对页面的访问
do函数有sessionloginid
和$v
,但$v
变量不输出任何内容我需要在函数代码中编辑什么?出现错误消息,说明:
注意:未定义的变量:v
if(isset($_SESSION['sessionloginid']))// point to id of user logged in
{
$query =
"SELECT *
FROM privilege
where login_id='".$_SESSION['sessionloginid']."' " ;
$access_level= array();
$result = mysqli_query($link,$query) or die('');
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC))
{
$_SESSION['sessionloginid']= $row['login_id'];
$_SESSION['sessionaccess']= $row['AccessLevel'];//output
$access_level[]=$_SESSION['sessionaccess'];
print_r ($access_level);//Array([0]=>1)Array([0]=>1[1]=>2)
} }
foreach($access_level as $k => $v)
{
print_r($v) ;// output 12
}
function protect(){
if($_SESSION['sessionloginid']==true && $v !=1)
{
echo $v; //output nothing
}
}
protect($v);
您需要传入$v
作为函数参数
protect($v);
在当前范围内,一旦foreach循环结束,$v就不存在了。它只存在于循环中,因此您必须调用循环中的函数,或者将更高范围内的变量设置为该值,以便在其他地方使用它。