I'm trying to code a login script using the following:

A Jquery snippet:

<script type="text/javascript">
$(function(){

$('div#login-button').click(function(){
            var email = $("#login_email").val();
            var password = $("#login_password").val();
            $.post("functions/login.php?email="+email+"&password="+password, {
            }, function(response){
                if($(response).html() == "correct")
                    window.location.href = "home.php";
                else window.alert($(response).html());
            });
});

});
</script>

HTML code:

<div id="login-type-1">
            E-mail:<input type="text" id="login_email" name="email" value="Type your Email ID" class="input" maxlength="100"/><br />
            Password:<input type="password" id="login_password" name="password" value="password" class="input" maxlength="30"/>
        <a href="#"><div id="login-button"><span>Log in</span></div></a>
</div>

functions/login.php:

<?php
    require_once('db.php');

        session_start();

        $email = $_REQUEST['email'];
        $password = $_REQUEST['password'];

        if(!$email || $email == "Type your Email ID")
            echo "<p>Please input your email id.</p>";
        if(!$password)
            echo "<p>Please input your password.</p>";

        if($email && $password && $email != "Type your Email ID"){
            $check = mysql_query("SELECT u_id, u_fname, u_lname, u_email FROM user_data WHERE u_password = '".md5($password)."' AND u_email = '".$email."'");
            $result = mysql_num_rows($check);
            if ($result == 1){

                $row = mysql_fetch_assoc($check);

                $_SESSION['u_id'] = $row['u_id'];
                $_SESSION['u_fname'] = $row['u_fname'];
                $_SESSION['u_lname'] = $row['u_lname'];
                $_SESSION['u_email'] = $row['u_email'];
                $_SESSION['u_name'] = $row['u_fname']." ".$row['u_lname'];

                echo "<p>correct</p>";

            }
            else {
                echo "<p>Invalid Authentication</p>";
            }
        }
?>

Database connection:

class db {
    public static $hostname_adminconn = "localhost";
    public static $database_adminconn = "masterdb";
    public static $username_adminconn = "root";
    public static $password_adminconn = "qwerty";
    public static $adminconn;

    public static function dbDb() {
        return db::$database_adminconn;
    }
    public static function dbConn() {
        return db::$adminconn;
    }
}
db::$adminconn = mysql_connect(db::$hostname_adminconn, db::$username_adminconn, db::$password_adminconn) or trigger_error(mysql_error(),E_USER_ERROR);

Still, I'm unable to login. Could someone help me in debugging it?

有帮助吗?

解决方案

Your PHP returns this:

echo "<p>correct</p>";

But JavaScript checks for this:

if($(response).html() == "correct")

That comparison will not work.

Having said that, you should return a more suitable response type, such as JSON:

header('Content-Type: application/json');

echo json_encode(array(
    'res' => 'ok',
));

In your JavaScript:

if (response.res === 'ok') {
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top