我正在尝试创建一个只检查用户是否具有正确排名以及他们是否在数据库中没有序列的函数。
我无法返回要在文件中使用的值。
的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;
}
答案 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();
}