我收到了这些错误:
注意:未定义的变量:第11行的login.php中的链接
警告:mysqli_real_escape_string()期望参数1为mysqli, 在第11行的login.php中给出的null
注意:未定义的变量:第18行的login.php中的链接
警告:mysqli_query()期望参数1为mysqli,null给定 在第18行的login.php中
警告:mysql_result()期望参数1为resource,null给定 在第19行的login.php中
以下是代码:
<?php
session_start();
$link = mysqli_connect('localhost','root','') or die();
mysqli_select_db($link,'lr') or die();
function sanitize($data) {
return mysqli_real_escape_string($link, $data); <<line 11
}
function user_exists($username) {
$username = sanitize($username);
$query = mysqli_query($link, "SELECT COUNT('user_id') FROM 'users' WHERE 'username' = '$username'"); <<line 18
return (mysql_result($query, 0) ==1) ? true : false; <<line19
}
if (empty($_POST) === false) {
$username = $_POST['username'];
$password = $_POST['password'];
if (empty($username) === true || empty($password) === true) {
$errors[] = 'You need to enter a username and password';
} else if (user_exists($username) === false) {
$errors[] = 'User not found';
}
}
?>
有什么问题?
答案 0 :(得分:0)
你需要在函数内使用$ _GLOBALS ['link']。
像这样:
function sanitize($data) {
return mysqli_real_escape_string($_GLOBALS['$link'], $data); <<line 11
}
user_exist函数中的内容相同。
答案 1 :(得分:0)
Global可能已经努力解决问题,但最好将变量传递给函数。
function sanitize($data, $A) {
return mysqli_real_escape_string($A, $data); <<line 11
}
function user_exists($username, $A) {
$username = sanitize($username);
$query = mysqli_query($A, "SELECT COUNT('user_id') FROM 'users' WHERE 'usernam' = '$username'"); <<line 18
return (mysql_result($query, 0) ==1) ? true : false; <<line19
}
if (empty($_POST) === false) {
$username = $_POST['username'];
$password = $_POST['password'];
if (empty($username, $link) === true || empty($password) === true) {
$errors[] = 'You need to enter a username and password';
} else if (user_exists($username, $link) === false) {
$errors[] = 'User not found';
}
}