Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用户身份验证PHP mySQL不工作_Php_Mysql_Authentication_Xampp - Fatal编程技术网

用户身份验证PHP mySQL不工作

用户身份验证PHP mySQL不工作,php,mysql,authentication,xampp,Php,Mysql,Authentication,Xampp,因此,我目前正在Xampp中使用php和mysql构建一个用户身份验证系统 我已经设法让它通过用户的电子邮件地址来识别用户是否存在,但其他功能似乎不起作用。例如,检查用户是否已激活其帐户,即使我将其在数据库中的活动状态更改为1,他们也不会返回。或者使用登录功能,即使电子邮件和密码都正确,也会说它们不正确 这是我的login.php脚本 <?php include 'init.php'; function sanitize($data){ return mysql_rea

因此,我目前正在Xampp中使用php和mysql构建一个用户身份验证系统

我已经设法让它通过用户的电子邮件地址来识别用户是否存在,但其他功能似乎不起作用。例如,检查用户是否已激活其帐户,即使我将其在数据库中的活动状态更改为1,他们也不会返回。或者使用登录功能,即使电子邮件和密码都正确,也会说它们不正确

这是我的login.php脚本

    <?php
include 'init.php';


function sanitize($data){
    return mysql_real_escape_string($data);
}

//check if user exists
function user_exists($email){
        $email = sanitize($email);
        //$query = mysql_query("SELECT COUNT('ID') FROM 'register' WHERE 'email' = '$email'");
        return (mysql_result(mysql_query("SELECT COUNT(ID) FROM register WHERE email = '$email'"),0) == 1)? true : false;
}

//check if user has activated account
function user_activate($email){
        $email = sanitize($email);
        //$query = mysql_query("SELECT COUNT('ID') FROM 'register' WHERE 'email' = '$email'");
        return (mysql_result(mysql_query("SELECT COUNT(ID) FROM register WHERE email = '$email' AND 'active' =1"),0) == 1)? true : false;
}
function user_id_from_email($email){
    $email = sanitize($email);
    return (mysql_result(mysql_query("SELECT id FROM register WHERE email = '$email'"),0,'id'));
}
function login($email,$password){
    $user_id = user_id_from_email($email);
    $email = sanitize($email);
    $password = md5($password);

    return (mysql_result(mysql_query("SELECT COUNT(id) FROM register WHERE email = '$email' AND 'password' ='$password'"),0) == 1)? $user_id : false;
}


if(empty($_POST)=== false){
    $email = $_POST['email'];   
    $password = $_POST['password'];
}

if(empty($email)|| empty($password) === true){
        $errors[] = "You must enter a username and a password"; 
}
else if(user_exists($email) === false){
    $errors[] = "Email address is not registered";  
}
else if(user_activate($email) === false){
    $errors[] = "You haven't activated your account yet";   
}
else{
    $login = login($email, $password);
    if($login === false){
        $errors[] = "email/password are incorrect";
    } else {
        echo "ok";
    }
}

print_r($errors);


/*$email = $_POST['email'];
$password = $_POST['password'];


if($email&&$password){
    $connect = mysql_connect("localhost","root","") or die ("Couldn't Connect");
    mysql_select_db("users") or die("Couldn't find Database");
}
    else 
        die("Please enter a username and a password");

$query = mysql_query("SELECT * FROM register WHERE email = '$email'");
$numrows = mysql_num_rows($query);

echo $numrows;*/


?>

在函数登录中,尝试删除字段名密码周围的引号。或者更喜欢用这个

请注意,您正在使用PHP7.0不再支持的函数mysql_result和mysql_query

正如你在这里看到的:

这同样适用于活动字段。您正在使用引号使表达式检查单词“active”是否等于1。这总是错误的。糟糕的编程!!!为什么要为同一个表、同一个用户、同一个会话查询数据库4次?查询一次并将数据转换成变量,然后在php中比较值,而不是单独查询数据库中的所有值。