0

我在为我的网站创建成员系统时遇到错误,以下代码是文件名funcs.php,但是当我尝试运行任何文件时,无论它是否是register.php or login.php,它都会向我显示以下错误:-

 Fatal error: Call to a member function bind_param() on a non-object in /home/mywebsitename/public_html/members/models/funcs.php on line 382

第 382 行是:-

$stmt->bind_param("is", $loggedInUser->user_id, $loggedInUser->hash_pw);

funcs.php 文件的 php 编码如下:-

<?php    
function getLanguageFiles()
{
    $directory = "models/languages/";
    $languages = glob($directory . "*.php");
    //print each file name
    return $languages;
}


{
    $directory = "models/site-templates/";
    $languages = glob($directory . "*.css");
    //print each file name
    return $languages;
}


function getPageFiles()
{
    $directory = "";
    $pages = glob($directory . "*.php");
    //print each file name
    foreach ($pages as $page){
        $row[$page] = $page;
    }
    return $row;
}


function destroySession($name)
{
    if(isset($_SESSION[$name]))
    {
        $_SESSION[$name] = NULL;
        unset($_SESSION[$name]);
    }
}


function getUniqueCode($length = "")
{   
    $code = md5(uniqid(rand(), true));
    if ($length != "") return substr($code, 0, $length);
    else return $code;
}


function generateActivationToken($gen = null)
{
    do
    {
        $gen = md5(uniqid(mt_rand(), false));
    }
    while(validateActivationToken($gen));
    return $gen;
}


function generateHash($plainText, $salt = null)
{
    if ($salt === null)
    {
        $salt = substr(md5(uniqid(rand(), true)), 0, 25);
    }
    else
    {
        $salt = substr($salt, 0, 25);
    }

    return $salt . sha1($salt . $plainText);
}


function isValidEmail($email)
{
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) {
        return true;
    }
    else {
        return false;
    }
}


function lang($key,$markers = NULL)
{
    global $lang;
    if($markers == NULL)
    {
        $str = $lang[$key];
    }
    else
    {

        $str = $lang[$key];
        $iteration = 1;
        foreach($markers as $marker)
        {
            $str = str_replace("%m".$iteration."%",$marker,$str);
            $iteration++;
        }
    }

    if($str == "")
    {
        return ("No language key found");
    }
    else
    {
        return $str;
    }
}


function minMaxRange($min, $max, $what)
{
    if(strlen(trim($what)) < $min)
        return true;
    else if(strlen(trim($what)) > $max)
        return true;
    else
    return false;
}


function replaceDefaultHook($str)
{
    global $default_hooks,$default_replace; 
    return (str_replace($default_hooks,$default_replace,$str));
}


function resultBlock($errors,$successes){

    if(count($errors) > 0)
    {
        echo "<div id='error'>
        <a href='#' onclick=\"showHide('error');\">[X]</a>
        <ul>";
        foreach($errors as $error)
        {
            echo "<li>".$error."</li>";
        }
        echo "</ul>";
        echo "</div>";
    }

    if(count($successes) > 0)
    {
        echo "<div id='success'>
        <a href='#' onclick=\"showHide('success');\">[X]</a>
        <ul>";
        foreach($successes as $success)
        {
            echo "<li>".$success."</li>";
        }
        echo "</ul>";
        echo "</div>";
    }
}


function sanitize($str)
{
    return strtolower(strip_tags(trim(($str))));
}




function deleteUsers($users) {
    global $mysqli,$db_table_prefix; 
    $i = 0;
    $stmt = $mysqli->prepare("DELETE FROM ".$db_table_prefix."users 
        WHERE id = ?");
    $stmt2 = $mysqli->prepare("DELETE FROM ".$db_table_prefix."user_permission_matches 
        WHERE user_id = ?");
    foreach($users as $id){
        $stmt->bind_param("i", $id);
        $stmt->execute();
        $stmt2->bind_param("i", $id);
        $stmt2->execute();
        $i++;
    }
    $stmt->close();
    $stmt2->close();
    return $i;
}


function displayNameExists($displayname)
{
    global $mysqli,$db_table_prefix;
    $stmt = $mysqli->prepare("SELECT active
        FROM ".$db_table_prefix."users
        WHERE
        display_name = ?
        LIMIT 1");
    $stmt->bind_param("s", $displayname);   
    $stmt->execute();
    $stmt->store_result();
    $num_returns = $stmt->num_rows;
    $stmt->close();

    if ($num_returns > 0)
    {
        return true;
    }
    else
    {
        return false;   
    }
}


function emailExists($email)
{
    global $mysqli,$db_table_prefix;
    $stmt = $mysqli->prepare("SELECT active
        FROM ".$db_table_prefix."users
        WHERE
        email = ?
        LIMIT 1");
    $stmt->bind_param("s", $email); 
    $stmt->execute();
    $stmt->store_result();
    $num_returns = $stmt->num_rows;
    $stmt->close();

    if ($num_returns > 0)
    {
        return true;
    }
    else
    {
        return false;   
    }
}


function emailUsernameLinked($email,$username)
{
    global $mysqli,$db_table_prefix;
    $stmt = $mysqli->prepare("SELECT active
        FROM ".$db_table_prefix."users
        WHERE user_name = ?
        AND
        email = ?
        LIMIT 1
        ");
    $stmt->bind_param("ss", $username, $email); 
    $stmt->execute();
    $stmt->store_result();
    $num_returns = $stmt->num_rows;
    $stmt->close();

    if ($num_returns > 0)
    {
        return true;
    }
    else
    {
        return false;   
    }
}


function fetchAllUsers()
{
    global $mysqli,$db_table_prefix; 
    $stmt = $mysqli->prepare("SELECT 
        id,
        user_name,
        display_name,
        password,
        email,
        activation_token,
        last_activation_request,
        lost_password_request,
        active,
        title,
        sign_up_stamp,
        last_sign_in_stamp
        FROM ".$db_table_prefix."users");
    $stmt->execute();
    $stmt->bind_result($id, $user, $display, $password, $email, $token, $activationRequest, $passwordRequest, $active, $title, $signUp, $signIn);

    while ($stmt->fetch()){
        $row[] = array('id' => $id, 'user_name' => $user, 'display_name' => $display, 'password' => $password, 'email' => $email, 'activation_token' => $token, 'last_activation_request' => $activationRequest, 'lost_password_request' => $passwordRequest, 'active' => $active, 'title' => $title, 'sign_up_stamp' => $signUp, 'last_sign_in_stamp' => $signIn);
    }
    $stmt->close();
    return ($row);
}


function fetchUserDetails($username=NULL,$token=NULL, $id=NULL)
{
    if($username!=NULL) {
        $column = "user_name";
        $data = $username;
    }
    elseif($token!=NULL) {
        $column = "activation_token";
        $data = $token;
    }
    elseif($id!=NULL) {
        $column = "id";
        $data = $id;
    }
    global $mysqli,$db_table_prefix; 
    $stmt = $mysqli->prepare("SELECT 
        id,
        user_name,
        display_name,
        password,
        email,
        activation_token,
        last_activation_request,
        lost_password_request,
        active,
        title,
        sign_up_stamp,
        last_sign_in_stamp
        FROM ".$db_table_prefix."users
        WHERE
        $column = ?
        LIMIT 1");
        $stmt->bind_param("s", $data);

    $stmt->execute();
    $stmt->bind_result($id, $user, $display, $password, $email, $token, $activationRequest, $passwordRequest, $active, $title, $signUp, $signIn);
    while ($stmt->fetch()){
        $row = array('id' => $id, 'user_name' => $user, 'display_name' => $display, 'password' => $password, 'email' => $email, 'activation_token' => $token, 'last_activation_request' => $activationRequest, 'lost_password_request' => $passwordRequest, 'active' => $active, 'title' => $title, 'sign_up_stamp' => $signUp, 'last_sign_in_stamp' => $signIn);
    }
    $stmt->close();
    return ($row);
}


function flagLostPasswordRequest($username,$value)
{
    global $mysqli,$db_table_prefix;
    $stmt = $mysqli->prepare("UPDATE ".$db_table_prefix."users
        SET lost_password_request = ?
        WHERE
        user_name = ?
        LIMIT 1
        ");
    $stmt->bind_param("ss", $value, $username);
    $result = $stmt->execute();
    $stmt->close();
    return $result;
}


function isUserLoggedIn()
{
    global $loggedInUser,$mysqli,$db_table_prefix;
    $stmt = $mysqli->prepare("SELECT 
        id,
        password
        FROM ".$db_table_prefix."users
        WHERE
        id = ?
        AND 
        password = ? 
        AND
        active = 1
        LIMIT 1");
    $stmt->bind_param("is", $loggedInUser->user_id, $loggedInUser->hash_pw);    
    $stmt->execute();
    $stmt->store_result();
    $num_returns = $stmt->num_rows;
    $stmt->close();

    if($loggedInUser == NULL)
    {
        return false;
    }
    else
    {
        if ($num_returns > 0)
        {
            return true;
        }
        else
        {
            destroySession("userCakeUser");
            return false;   
        }
    }
}


function setUserActive($token)
{
    global $mysqli,$db_table_prefix;
    $stmt = $mysqli->prepare("UPDATE ".$db_table_prefix."users
        SET active = 1
        WHERE
        activation_token = ?
        LIMIT 1");
    $stmt->bind_param("s", $token);
    $result = $stmt->execute();
    $stmt->close(); 
    return $result;
}


function updateDisplayName($id, $display)
{
    global $mysqli,$db_table_prefix;
    $stmt = $mysqli->prepare("UPDATE ".$db_table_prefix."users
        SET display_name = ?
        WHERE
        id = ?
        LIMIT 1");
    $stmt->bind_param("si", $display, $id);
    $result = $stmt->execute();
    $stmt->close();
    return $result;
}


function updateEmail($id, $email)
{
    global $mysqli,$db_table_prefix;
    $stmt = $mysqli->prepare("UPDATE ".$db_table_prefix."users
        SET 
        email = ?
        WHERE
        id = ?");
    $stmt->bind_param("si", $email, $id);
    $result = $stmt->execute();
    $stmt->close(); 
    return $result;
}


function updateLastActivationRequest($new_activation_token,$username,$email)
{
    global $mysqli,$db_table_prefix;    
    $stmt = $mysqli->prepare("UPDATE ".$db_table_prefix."users
        SET activation_token = ?,
        last_activation_request = ?
        WHERE email = ?
        AND
        user_name = ?");
    $stmt->bind_param("ssss", $new_activation_token, time(), $email, $username);
    $result = $stmt->execute();
    $stmt->close(); 
    return $result;
}


function updatePasswordFromToken($pass,$token)
{
    global $mysqli,$db_table_prefix;
    $new_activation_token = generateActivationToken();
    $stmt = $mysqli->prepare("UPDATE ".$db_table_prefix."users
        SET password = ?,
        activation_token = ?
        WHERE
        activation_token = ?");
    $stmt->bind_param("sss", $pass, $new_activation_token, $token);
    $result = $stmt->execute();
    $stmt->close(); 
    return $result;
}


function updateTitle($id, $title)
{
    global $mysqli,$db_table_prefix;
    $stmt = $mysqli->prepare("UPDATE ".$db_table_prefix."users
        SET 
        title = ?
        WHERE
        id = ?");
    $stmt->bind_param("si", $title, $id);
    $result = $stmt->execute();
    $stmt->close(); 
    return $result; 
}


function userIdExists($id)
{
    global $mysqli,$db_table_prefix;
    $stmt = $mysqli->prepare("SELECT active
        FROM ".$db_table_prefix."users
        WHERE
        id = ?
        LIMIT 1");
    $stmt->bind_param("i", $id);    
    $stmt->execute();
    $stmt->store_result();
    $num_returns = $stmt->num_rows;
    $stmt->close();

    if ($num_returns > 0)
    {
        return true;
    }
    else
    {
        return false;   
    }
}


function usernameExists($username)
{
    global $mysqli,$db_table_prefix;
    $stmt = $mysqli->prepare("SELECT active
        FROM ".$db_table_prefix."users
        WHERE
        user_name = ?
        LIMIT 1");
    $stmt->bind_param("s", $username);  
    $stmt->execute();
    $stmt->store_result();
    $num_returns = $stmt->num_rows;
    $stmt->close();

    if ($num_returns > 0)
    {
        return true;
    }
    else
    {
        return false;   
    }
}


function validateActivationToken($token,$lostpass=NULL)
{
    global $mysqli,$db_table_prefix;
    if($lostpass == NULL) 
    {   
        $stmt = $mysqli->prepare("SELECT active
            FROM ".$db_table_prefix."users
            WHERE active = 0
            AND
            activation_token = ?
            LIMIT 1");
    }
    else 
    {
        $stmt = $mysqli->prepare("SELECT active
            FROM ".$db_table_prefix."users
            WHERE active = 1
            AND
            activation_token = ?
            AND
            lost_password_request = 1 
            LIMIT 1");
    }
    $stmt->bind_param("s", $token);
    $stmt->execute();
    $stmt->store_result();
        $num_returns = $stmt->num_rows;
    $stmt->close();

    if ($num_returns > 0)
    {
        return true;
    }
    else
    {
        return false;   
    }
}


function createPermission($permission) {
    global $mysqli,$db_table_prefix; 
    $stmt = $mysqli->prepare("INSERT INTO ".$db_table_prefix."permissions (
        name
        )
        VALUES (
        ?
        )");
    $stmt->bind_param("s", $permission);
    $result = $stmt->execute();
    $stmt->close(); 
    return $result;
}

function deletePermission($permission) {
    global $mysqli,$db_table_prefix,$errors; 
    $i = 0;
    $stmt = $mysqli->prepare("DELETE FROM ".$db_table_prefix."permissions 
        WHERE id = ?");
    $stmt2 = $mysqli->prepare("DELETE FROM ".$db_table_prefix."user_permission_matches 
        WHERE permission_id = ?");
    $stmt3 = $mysqli->prepare("DELETE FROM ".$db_table_prefix."permission_page_matches 
        WHERE permission_id = ?");
    foreach($permission as $id){
        if ($id == 1){
            $errors[] = lang("CANNOT_DELETE_NEWUSERS");
        }
        elseif ($id == 2){
            $errors[] = lang("CANNOT_DELETE_ADMIN");
        }
        else{
            $stmt->bind_param("i", $id);
            $stmt->execute();
            $stmt2->bind_param("i", $id);
            $stmt2->execute();
            $stmt3->bind_param("i", $id);
            $stmt3->execute();
            $i++;
        }
    }
    $stmt->close();
    $stmt2->close();
    $stmt3->close();
    return $i;
}


function fetchAllPermissions()
{
    global $mysqli,$db_table_prefix; 
    $stmt = $mysqli->prepare("SELECT 
        id,
        name
        FROM ".$db_table_prefix."permissions");
    $stmt->execute();
    $stmt->bind_result($id, $name);
    while ($stmt->fetch()){
        $row[] = array('id' => $id, 'name' => $name);
    }
    $stmt->close();
    return ($row);
}


function fetchPermissionDetails($id)
{
    global $mysqli,$db_table_prefix; 
    $stmt = $mysqli->prepare("SELECT 
        id,
        name
        FROM ".$db_table_prefix."permissions
        WHERE
        id = ?
        LIMIT 1");
    $stmt->bind_param("i", $id);
    $stmt->execute();
    $stmt->bind_result($id, $name);
    while ($stmt->fetch()){
        $row = array('id' => $id, 'name' => $name);
    }
    $stmt->close();
    return ($row);
}


function permissionIdExists($id)
{
    global $mysqli,$db_table_prefix;
    $stmt = $mysqli->prepare("SELECT id
        FROM ".$db_table_prefix."permissions
        WHERE
        id = ?
        LIMIT 1");
    $stmt->bind_param("i", $id);    
    $stmt->execute();
    $stmt->store_result();
    $num_returns = $stmt->num_rows;
    $stmt->close();

    if ($num_returns > 0)
    {
        return true;
    }
    else
    {
        return false;   
    }
}

function permissionNameExists($permission)
{
    global $mysqli,$db_table_prefix;
    $stmt = $mysqli->prepare("SELECT id
        FROM ".$db_table_prefix."permissions
        WHERE
        name = ?
        LIMIT 1");
    $stmt->bind_param("s", $permission);    
    $stmt->execute();
    $stmt->store_result();
    $num_returns = $stmt->num_rows;
    $stmt->close();

    if ($num_returns > 0)
    {
        return true;
    }
    else
    {
        return false;   
    }
}

function updatePermissionName($id, $name)
{
    global $mysqli,$db_table_prefix;
    $stmt = $mysqli->prepare("UPDATE ".$db_table_prefix."permissions
        SET name = ?
        WHERE
        id = ?
        LIMIT 1");
    $stmt->bind_param("si", $name, $id);
    $result = $stmt->execute();
    $stmt->close(); 
    return $result; 
}


function addPermission($permission, $user) {
    global $mysqli,$db_table_prefix; 
    $i = 0;
    $stmt = $mysqli->prepare("INSERT INTO ".$db_table_prefix."user_permission_matches (
        permission_id,
        user_id
        )
        VALUES (
        ?,
        ?
        )");
    if (is_array($permission)){
        foreach($permission as $id){
            $stmt->bind_param("ii", $id, $user);
            $stmt->execute();
            $i++;
        }
    }
    elseif (is_array($user)){
        foreach($user as $id){
            $stmt->bind_param("ii", $permission, $id);
            $stmt->execute();
            $i++;
        }
    }
    else {
        $stmt->bind_param("ii", $permission, $user);
        $stmt->execute();
        $i++;
    }
    $stmt->close();
    return $i;
}

function fetchAllMatches()
{
    global $mysqli,$db_table_prefix; 
    $stmt = $mysqli->prepare("SELECT 
        id,
        user_id,
        permission_id
        FROM ".$db_table_prefix."user_permission_matches");
    $stmt->execute();
    $stmt->bind_result($id, $user, $permission);
    while ($stmt->fetch()){
        $row[] = array('id' => $id, 'user_id' => $user, 'permission_id' => $permission);
    }
    $stmt->close();
    return ($row);  
}

function fetchUserPermissions($user_id)
{
    global $mysqli,$db_table_prefix; 
    $stmt = $mysqli->prepare("SELECT
        id,
        permission_id
        FROM ".$db_table_prefix."user_permission_matches
        WHERE user_id = ?
        ");
    $stmt->bind_param("i", $user_id);   
    $stmt->execute();
    $stmt->bind_result($id, $permission);
    while ($stmt->fetch()){
        $row[$permission] = array('id' => $id, 'permission_id' => $permission);
    }
    $stmt->close();
    if (isset($row)){
        return ($row);
    }
}

function fetchPermissionUsers($permission_id)
{
    global $mysqli,$db_table_prefix; 
    $stmt = $mysqli->prepare("SELECT id, user_id
        FROM ".$db_table_prefix."user_permission_matches
        WHERE permission_id = ?
        ");
    $stmt->bind_param("i", $permission_id); 
    $stmt->execute();
    $stmt->bind_result($id, $user);
    while ($stmt->fetch()){
        $row[$user] = array('id' => $id, 'user_id' => $user);
    }
    $stmt->close();
    if (isset($row)){
        return ($row);
    }
}

function removePermission($permission, $user) {
    global $mysqli,$db_table_prefix; 
    $i = 0;
    $stmt = $mysqli->prepare("DELETE FROM ".$db_table_prefix."user_permission_matches 
        WHERE permission_id = ?
        AND user_id =?");
    if (is_array($permission)){
        foreach($permission as $id){
            $stmt->bind_param("ii", $id, $user);
            $stmt->execute();
            $i++;
        }
    }
    elseif (is_array($user)){
        foreach($user as $id){
            $stmt->bind_param("ii", $permission, $id);
            $stmt->execute();
            $i++;
        }
    }
    else {
        $stmt->bind_param("ii", $permission, $user);
        $stmt->execute();
        $i++;
    }
    $stmt->close();
    return $i;
}

//Update configuration table
function updateConfig($id, $value)
{
    global $mysqli,$db_table_prefix;
    $stmt = $mysqli->prepare("UPDATE ".$db_table_prefix."configuration
        SET 
        value = ?
        WHERE
        id = ?");
    foreach ($id as $cfg){
        $stmt->bind_param("si", $value[$cfg], $cfg);
        $stmt->execute();
    }
    $stmt->close(); 
}

function createPages($pages) {
    global $mysqli,$db_table_prefix; 
    $stmt = $mysqli->prepare("INSERT INTO ".$db_table_prefix."pages (
        page
        )
        VALUES (
        ?
        )");
    foreach($pages as $page){
        $stmt->bind_param("s", $page);
        $stmt->execute();
    }
    $stmt->close();
}


function deletePages($pages) {
    global $mysqli,$db_table_prefix; 
    $stmt = $mysqli->prepare("DELETE FROM ".$db_table_prefix."pages 
        WHERE id = ?");
    $stmt2 = $mysqli->prepare("DELETE FROM ".$db_table_prefix."permission_page_matches 
        WHERE page_id = ?");
    foreach($pages as $id){
        $stmt->bind_param("i", $id);
        $stmt->execute();
        $stmt2->bind_param("i", $id);
        $stmt2->execute();
    }
    $stmt->close();
    $stmt2->close();
}


function fetchAllPages()
{
    global $mysqli,$db_table_prefix; 
    $stmt = $mysqli->prepare("SELECT 
        id,
        page,
        private
        FROM ".$db_table_prefix."pages");
    $stmt->execute();
    $stmt->bind_result($id, $page, $private);
    while ($stmt->fetch()){
        $row[$page] = array('id' => $id, 'page' => $page, 'private' => $private);
    }
    $stmt->close();
    if (isset($row)){
        return ($row);
    }
}


function fetchPageDetails($id)
{
    global $mysqli,$db_table_prefix; 
    $stmt = $mysqli->prepare("SELECT 
        id,
        page,
        private
        FROM ".$db_table_prefix."pages
        WHERE
        id = ?
        LIMIT 1");
    $stmt->bind_param("i", $id);
    $stmt->execute();
    $stmt->bind_result($id, $page, $private);
    while ($stmt->fetch()){
        $row = array('id' => $id, 'page' => $page, 'private' => $private);
    }
    $stmt->close();
    return ($row);
}


function pageIdExists($id)
{
    global $mysqli,$db_table_prefix;
    $stmt = $mysqli->prepare("SELECT private
        FROM ".$db_table_prefix."pages
        WHERE
        id = ?
        LIMIT 1");
    $stmt->bind_param("i", $id);    
    $stmt->execute();
    $stmt->store_result();  
    $num_returns = $stmt->num_rows;
    $stmt->close();

    if ($num_returns > 0)
    {
        return true;
    }
    else
    {
        return false;   
    }
}


function updatePrivate($id, $private)
{
    global $mysqli,$db_table_prefix;
    $stmt = $mysqli->prepare("UPDATE ".$db_table_prefix."pages
        SET 
        private = ?
        WHERE
        id = ?");
    $stmt->bind_param("ii", $private, $id);
    $result = $stmt->execute();
    $stmt->close(); 
    return $result; 
}

function addPage($page, $permission) {
    global $mysqli,$db_table_prefix; 
    $i = 0;
    $stmt = $mysqli->prepare("INSERT INTO ".$db_table_prefix."permission_page_matches (
        permission_id,
        page_id
        )
        VALUES (
        ?,
        ?
        )");
    if (is_array($permission)){
        foreach($permission as $id){
            $stmt->bind_param("ii", $id, $page);
            $stmt->execute();
            $i++;
        }
    }
    elseif (is_array($page)){
        foreach($page as $id){
            $stmt->bind_param("ii", $permission, $id);
            $stmt->execute();
            $i++;
        }
    }
    else {
        $stmt->bind_param("ii", $permission, $page);
        $stmt->execute();
        $i++;
    }
    $stmt->close();
    return $i;
}

function fetchPagePermissions($page_id)
{
    global $mysqli,$db_table_prefix; 
    $stmt = $mysqli->prepare("SELECT
        id,
        permission_id
        FROM ".$db_table_prefix."permission_page_matches
        WHERE page_id = ?
        ");
    $stmt->bind_param("i", $page_id);   
    $stmt->execute();
    $stmt->bind_result($id, $permission);
    while ($stmt->fetch()){
        $row[$permission] = array('id' => $id, 'permission_id' => $permission);
    }
    $stmt->close();
    if (isset($row)){
        return ($row);
    }
}

function fetchPermissionPages($permission_id)
{
    global $mysqli,$db_table_prefix; 
    $stmt = $mysqli->prepare("SELECT
        id,
        page_id
        FROM ".$db_table_prefix."permission_page_matches
        WHERE permission_id = ?
        ");
    $stmt->bind_param("i", $permission_id); 
    $stmt->execute();
    $stmt->bind_result($id, $page);
    while ($stmt->fetch()){
        $row[$page] = array('id' => $id, 'permission_id' => $page);
    }
    $stmt->close();
    if (isset($row)){
        return ($row);
    }
}

function removePage($page, $permission) {
    global $mysqli,$db_table_prefix; 
    $i = 0;
    $stmt = $mysqli->prepare("DELETE FROM ".$db_table_prefix."permission_page_matches 
        WHERE page_id = ?
        AND permission_id =?");
    if (is_array($page)){
        foreach($page as $id){
            $stmt->bind_param("ii", $id, $permission);
            $stmt->execute();
            $i++;
        }
    }
    elseif (is_array($permission)){
        foreach($permission as $id){
            $stmt->bind_param("ii", $page, $id);
            $stmt->execute();
            $i++;
        }
    }
    else {
        $stmt->bind_param("ii", $permission, $user);
        $stmt->execute();
        $i++;
    }
    $stmt->close();
    return $i;
}

function securePage($uri){


    $tokens = explode('/', $uri);
    $page = $tokens[sizeof($tokens)-1];
    global $mysqli,$db_table_prefix,$loggedInUser;

    $stmt = $mysqli->prepare("SELECT 
        id,
        page,
        private
        FROM ".$db_table_prefix."pages
        WHERE
        page = ?
        LIMIT 1");
    $stmt->bind_param("s", $page);
    $stmt->execute();
    $stmt->bind_result($id, $page, $private);
    while ($stmt->fetch()){
        $pageDetails = array('id' => $id, 'page' => $page, 'private' => $private);
    }
    $stmt->close();

    if (empty($pageDetails)){
        return true;
    }

    elseif ($pageDetails['private'] == 0) {
        return true;    
    }

    elseif(!isUserLoggedIn()) 
    {
        header("Location: login.php");
        return false;
    }
    else {

        $stmt = $mysqli->prepare("SELECT
            permission_id
            FROM ".$db_table_prefix."permission_page_matches
            WHERE page_id = ?
            ");
        $stmt->bind_param("i", $pageDetails['id']); 
        $stmt->execute();
        $stmt->bind_result($permission);
        while ($stmt->fetch()){
            $pagePermissions[] = $permission;
        }
        $stmt->close();

        if ($loggedInUser->checkPermission($pagePermissions)){ 
            return true;
        }

        elseif ($loggedInUser->user_id == $master_account){
            return true;
        }
        else {
            header("Location: account.php");
            return false;   
        }
    }
}

?>
4

1 回答 1

0

该错误实际上是在您的 SQL 查询中。它在第 382 行显示错误,因为bind_param()它是从$mysqli->prepare(). 如果您的 prepare 方法返回错误,则该bind_param()方法不可用。

从您的评论中,我可以看到an unknown column 'active'您的查询中有。确保active表中的字段users是有效字段。

$stmt = $mysqli->prepare("SELECT 
    id,
    password
    FROM ".$db_table_prefix."users
    WHERE
    id = ?
    AND 
    password = ? 
    AND
    active = 1    <--------------------- UNKNOWN COLUMN
    LIMIT 1")
于 2013-05-30T09:02:23.393 回答