0

次のエラーが表示されます。

注意: 未定義の変数: login.php の 11 行目のリンク

警告: mysqli_real_escape_string() は、パラメーター 1 が mysqli であることを想定しており、11 行目の login.php で null が指定されています

注意: 未定義の変数: login.php の 18 行目のリンク

警告: mysqli_query() は、パラメーター 1 が mysqli であることを想定しています。18 行目の login.php で null が指定されています。

警告: mysql_result() はパラメーター 1 がリソースであると想定します。19 行目の login.php で null が指定されています

コードは次のとおりです。

<?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';
        }


}

?>

どうしたの?

4

2 に答える 2

0

グローバルは問題を解決するために機能した可能性がありますが、変数を関数に渡す方が適切です。

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';
        }


}
于 2015-01-22T21:47:23.183 に答える
0

関数内で $_GLOBALS['link'] を使用する必要があります。

このような:

    function sanitize($data) {
    return mysqli_real_escape_string($_GLOBALS['$link'], $data);     <<line 11
}

user_exist 関数内でも同じです。

于 2013-09-19T06:47:03.557 に答える