2015-02-27 10 views
1

Я пытаюсь найти, что заставляет мой код по-прежнему получать данные, даже если запрос является ложным. Это простая форма журнала с использованием ajax.Ajax все еще получает данные

Вот мой код:

$(function() { 
    $("#submit_login").click(function() { 
    var username = $("input#username").val(); 
    if (username == "") { 
     $('#error').html('Please Insert Your Email Address');  
     return false; 
    } 
    var password = $("input#password").val(); 
    if (password == "") { 
     $('#error').html('Please Insert Your Password'); 
     return false; 
    } 
    var dataString = 'username='+ username + '&password=' + password; 
    $.ajax({ 
     type: "POST", 
     url: 'login.php', 
     data: dataString, 
     dataType: "html", 
     beforeSend: function(){ $("#submit_login").val('Connecting...');}, 
     success: function(data) { 
     if (data == 0) { 
     $('#error').html('Wrong Login Data') 
     $("#submit_login").val('Sign in!'); 
     } else { 
      $('#error').html('<b style="color:green;">you are logged. wait for redirection</b>'); 
      document.location.href = 'private.php'; 
     } 
     } 
    }); 
    return false; 
    }); 
}); 

login.php

<?php 
session_start(); 
include("config2.php"); 
if(isset($_POST['username']) && isset($_POST['password'])) 
{ 
// username and password sent from Form 
$username=mysqli_real_escape_string($db,$_POST['username']); 
$password=md5(mysqli_real_escape_string($db,$_POST['password'])); 
$results = $mysqli->query("SELECT id FROM users WHERE username='$username' and password='$password'"); 
$obj = $results->fetch_object(); 
if ($results) 
{ 
$_SESSION['username'] = $obj->id; 
     echo $username; 
} 


} 

?> 

Дело в том, каждый раз, когда попытка войти произойдет, это перенаправить меня private.php даже имя пользователя и неверный пароль. Это означает, что login.php все еще получает данные, даже если запрос возвращается false или 0.

Мне сложно узнать, что вызывает это, и, надеюсь, вы, ребята, можете мне помочь! веселит.

+2

Вы пробовали 'console.log (data)'? Я не вижу ни одного 0, напечатанного в login.php. –

+0

Вы забыли добавить полукольцо ';' в конце этого кода $ ('# error'). html («Неверные данные входа») –

+0

@caCtus не нужно '0', потому что никакие данные не будут' == 0', например 'console.log (' '== 0) // true'. Это просто очень плохой условный тест. – charlietfl

ответ

-1

Если условие в login.php возможно неверно. Должно быть так? Результат переменной $ всегда возвращает 1, потому что вы сохраняете запрос, а не сами результаты. Вместо $ result измените на $ obj.

if ($obj) 
{ 
    $_SESSION['username'] = $obj->id; 
    echo $username; 
} 
+0

Правда, но он по-прежнему перенаправляет меня на private.php –

+0

И почему вы эхо $ username вместо $ _SESSION ['username'] ??? –

+0

I echo'd имя пользователя, поэтому он возвращает значение. –

Смежные вопросы