从另一个文件中的函数返回数据

时间:2015-09-20 21:40:31

标签: php html css

我正在尝试创建一个只检查用户是否具有正确排名以及他们是否在数据库中没有序列的函数。

我无法返回要在文件中使用的值。

的index.php

$xf_user = $_SESSION['user']['username'];

check_user_serial($xf_user);
check_user_rank($xf_user);

if($has_serial == 0) {
    if($user_rank == 4) {
        generate_serial($xf_user);
    } else {
        header('Location: ../index.php?d=n');
        die();
    }
} else {
    header('Location: ../index.php?d=s');
    die();
}

的functions.php

function check_user_serial($username) {
    global $dbConnect;
    $query = "SELECT * FROM xf_users WHERE username = '".$username."'";
    try {
        $stmt = $dbConnect->prepare($query);
        $stmt->execute();
        $result = $stmt->fetchAll();
        foreach($result as $row) {
            $has_serial = $row['has_serial'];
        }
    }
    catch(PDOException $ex) {
        die($ex->getMessage());
    }
    return $has_serial;
}

function check_user_rank($username) {
    global $dbConnect;
    $query = "SELECT * FROM xf_users WHERE username = '".$username."'";
    try {
        $stmt = $dbConnect->prepare($query);
        $stmt->execute();
        $result = $stmt->fetchAll();
        foreach($result as $row) {
            $user_rank = $row['user_rank'];
        }
    }
    catch(PDOException $ex) {
        die($ex->getMessage());
    }
    return $user_rank;
}

function generate_serial($username) {
    global $dbConnect;
    $serial1 = substr(md5(uniqid(rand(), true)), -5, 5);
    $serial2 = substr(md5(uniqid(rand(), true)), -5, 5);
    $serial3 = substr(md5(uniqid(rand(), true)), -5, 5);
    $serial4 = substr(md5(uniqid(rand(), true)), -5, 5);
    $serial  = sprintf('%s-%s-%s-%s', $serial1, $serial2, $serial3, $serial4);
    $query = "SELECT * FROM xf_users WHERE serial = '".$serial."'";
    try {
        $stmt = $dbConnect->prepare($query);
        $stmt->execute();
        $result = $stmt->fetchAll();
        if($result == NULL) {
            $query = "INSERT INTO xf_users (serial, has_serial) VALUES (:serial, :has_serial) WHERE username = '".$username."'";
            $query_params = array(':serial' => $serial, ':has_serial' => '1');
            try {
                $stmt = $dbConnect->prepare($query);
                $stmt->execute($query_params);
            }
            catch(PDOException $ex) {
                die();
            }
        } else {
            die('serial generation has failed. please notify an administrator.');
        }
    }
    catch(PDOException $ex) {
        die($ex->getMessage());
    }
    return $serial;
}

1 个答案:

答案 0 :(得分:1)

$xf_user = $_SESSION['user']['username'];

$has_serial = check_user_serial($xf_user);
$user_rank = check_user_rank($xf_user);

if($has_serial == 0) {
    if($user_rank == 4) {
        generate_serial($xf_user);
    } else {
        header('Location: ../index.php?d=n');
        die();
    }
} else {
    header('Location: ../index.php?d=s');
    die();
}

试试这个,您没有将$has_serial$user_rank分配给任何内容。

调试版本:

$xf_user = $_SESSION['user']['username'];

    $has_serial = check_user_serial($xf_user);
    $user_rank = check_user_rank($xf_user);

    if($has_serial == 0) {
        if($user_rank == 4) {
            echo "generated serial";
            generate_serial($xf_user);
        } else {
            echo "user rank not 4";
            //header('Location: ../index.php?d=n');
            die();
        }
    } else {
        echo "has serial";
        //header('Location: ../index.php?d=s');
        die();
    }
相关问题