这段代码有什么问题(函数输出中的数组什么都没有)?

时间:2013-11-18 13:37:13

标签: php mysqli

为什么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();

1 个答案:

答案 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永远不会发生。

安德烈