所以我写了这个登录系统,但是有一个大问题。每次我尝试在输入的值与代码矛盾时打印 $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
}
?>
关于php - 如何修复此代码(由于 MySql 已弃用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28738929/