为什么protect_page函数中的数组“$ access_level”什么都没输出?
我不知道这段代码有什么不对,以防止数组“access_level”输出。 我需要编辑什么才能解决该问题
session_start();
include 'C:\xampp\htdocs\database\agtdatabase\agt_site\connection\connect.php';
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)//output Array([0]=>1)Array([0]=>1[1]=>2)
}
function protect_page()
{
$access_level = array();
$access_level[] = $_SESSION['sessionaccess'];
if (in_array(1, $access_level))
{
// header ('location:http://localhost/database/agtdatabase/agt_site/agtSite/agt2.php');
print_r($access_level); //output nothing
exit();
}
}
}//end of parent if
protect_page();
ob_end_flush();
答案 0 :(得分:-1)
假设您在评论中写的内容是您所看到的,您可能需要注意
$access_level[]=$_SESSION['sessionaccess'];
将整个$ _SESSION ['sessionaccess']数组添加为$ access_level的第一个元素,因此$ access_level是
Array([0]=>(Array([0]=>1[1]=>2))
因此它不包含值1,因此in_array(1,$ access_level)为false,因此重定向/ print_r永远不会发生。
安德烈