所以我写了这个登录系统,但有一个大问题。每当我试图在输入的值与代码矛盾时打印$errors时,它都不起作用。这是用户登录代码
<?php
if (empty($_POST) === false) {
$username = $_POST['username'];
$password = $_POST['password'];
if (empty($username) === true || empty($password) === true) {
$errors[] = 'Fill out this field!';
} else if (user_exists($username) === false) {
$errors[] = 'Are you sure you''ve registered?';
} else if (user_active($username) === false) {
$errors[] = 'you haven''t activated your account!';
} else {
//Login com.
}
print_r($errors);
}
?>
所以我认为这里没有任何问题。我怀疑问题就在这里。这是通用文件:
<?php
function sanitize($data) {
return mysqli_real_escape_string($data);
}
?>
这是用户代码:
<?php
function user_active($username, $con){
$username = sanitize($username, $con);
$q = "SELECT COUNT(`user_id`)
FROM `users`
WHERE `username` = '{$username}'
AND `active` = 1";
if($query = mysqli_query($con, $q)){
return (mysqli_num_rows($query) > 0) ? true : false;
} else {
//TODO: Replace in production
trigger_error('<p>Query ' . mysqli_error($con) . '</p>');
}
}
?>
这是连接代码:
<?php
$con = mysqli_connect('localhost', 'root', '') or die(mysql_error());
mysqli_select_db($con, 'users');
?>
我知道MySql已被弃用,所以我转换为MySqli,但由于代码不断矛盾,它只会引起更多问题。如有任何帮助,我们将不胜感激。非常感谢。
这样修改,
<?php
function sanitize($data, $con) { //$con parameter added
return mysqli_real_escape_string($con, $data); //$con parameter added
}
?>
在此处阅读