登录表单无法正常运行

时间:2014-03-14 12:13:22

标签: php mysql mysqli

我有两个文件,一个是我的功能,另一个是我的登录脚本,两个脚本的代码如下。我有两个用户定义的函数,一个叫做user_exists($ username),另一个叫做sanitize($ data)。我想要的功能是验证数据库中有一个名为graham的用户名和密码,密码为12345,如果有的话,if语句应该打印一条错误,说明你没有激活你的帐户,但它没有,它只是打印错误消息数组()。此外,当我输入无效的用户名和密码时,它应该打印错误,说明找不到用户名,而是错误消息只打印array()。这是我从pre-mysqli php代码转换为mysqli的代码。

本质上这篇文章的真正含义是,有人可以查看我对mysqli的mysql代码的翻译,并帮我找到错误。

以下是我正在使用的2个函数,$ dbc变量是我的数据库连接:

<?php
function user_exists($username, $dbc){  
    $username = sanitize($username, $dbc);
    $q = "SELECT COUNT(user_id) FROM users WHERE username='$username'";
    $query = mysqli_query($dbc, $q) or trigger_error('<p>Query ' . mysqli_error($dbc) . '</p>');
    if (mysqli_num_rows($query) == 1){
        return true;
    } else {
        return false;
    }
}

function user_active($username, $dbc){  
    $username = sanitize($username, $dbc);
    $q = "SELECT COUNT(user_id) FROM users WHERE username='$username' AND active = 1";
    $query = mysqli_query($dbc, $q) or trigger_error('<p>Query ' . mysqli_error($dbc) . '</p>');
    if (mysqli_num_rows($query) == 1){
        return true;
    } else {
        return false;
    }
}
?>

以下是login.php脚本中的代码:

<?php
include ('core/init.php');

if (empty($_POST)== false){
    $username = $_POST['username'];
    $password = $_POST['password'];
    if (empty($username)){
        $errors[] = 'You need to enter a username';
    } 
    if (empty($password)){
        $errors[] = 'You need to enter a password';
    } elseif (user_exists($username, $dbc) == false){
        $errors[] = 'We couldn\'t find that username, have you registered?';
    } elseif (user_active($username, $dbc) == false){
        $errors[] = 'You haven\'t activated your account, click on the link in the email we sent you to activate your account';
    }
    print_r($errors);
} 

?>

以下是转换为mysqli之前的函数代码。

<?php
function user_exists($username){
    $username = sanitize($username);
    return (mysql_result(mysql_query("SELECT COUNT('user_id') FROM users WHERE username = '$username'"), 0) == 1) ? true : false;
}

<?php
function user_active($username){
    $username = sanitize($username);
    return (mysql_result(mysql_query("SELECT COUNT('user_id') FROM users WHERE username = '$username'" AND active = 1"), 0) == 1) ? true : false;
}

在我的数据库中,列active = 1表示用户的帐户处于活动状态。

0 个答案:

没有答案
相关问题