2016-12-23 3 views
1

Я изучаю Ajax и пытаюсь сделать страницу входа с php. Я не могу понять, почему мой код не работает. Всякий раз, когда я нажимаю кнопку входа в систему, моя страница перенаправляется на другую страницу (например, exam.php) без проверки моей функции входа. Мои коды следующие. Буду рад, если кто-нибудь поможет мне разобраться с проблемой.Ajax не работает на странице входа

HTML

<form action="" method="post"> 
<input name="email" type="text" id="email"> 
<input name="password" type="password" id="password"> 
<input type="submit" name="login" id="loginsubmit" value="Login"> 
</form> 
    <span class="empty" style="display:none">Field must be empty..</span> 
    <span class="error" style="display:none">Email or Password not matched !!!</span> 
    <span class="disable" style="display:none">User Id Disabled.</span> 

AJAX коды

$(function(){ 
// For user login 
$("#loginsubmit").click(function(){ 
    var email  = $("#email").val(); 
    var password = $("#password").val(); 
    var dataString = 'email='+email+'&password='+password; 
    $.ajax({ 
     type:"POST", 
     url:"getlogin.php", 
     data:dataString, 
     success: function(data){ 
      if ($.trim(data) == "empty") { 
       $(".empty").show(); 
      }else if($.trim(data) == "disable") { 
       $(".disable").show(); 
      }else if($.trim(data) == "error"){ 
       $(".error").show(); 
      } else { 
       window.location = "exam.php"; 
       //document.write = "You shall not pass"; 
      } 
     } 
    }); 
    return false; 
}); 
}); 

getlogin.php

$filepath = realpath(dirname(__FILE__)); 
include_once ($filepath.'/classes/user.php'); 
$usr = new User(); 

if ($_SERVER['REQUEST_METHOD'] == 'POST') { 
    // this values are coming from main.js 
    $email = $_POST['email']; 
    $password = md5($_POST['password']);   
    $userlogin = $usr->userLogin($email, $password); // function created in user.php page 
} 

user.php

$filepath = realpath(dirname(__FILE__)); 
include_once ($filepath.'/../lib/Session.php'); 
include_once ($filepath.'/../lib/Database.php'); 
include_once ($filepath.'/../helpers/Format.php'); 

public function userLogin($email, $password){ 
    $email  = $this->fm->validation($email); 
    $password = $this->fm->validation($password); 
    $email  = mysqli_real_escape_string($this->db->link, $email); 
    $password = mysqli_real_escape_string($this->db->link, $password); 

     if ($email == "" || $password == "") 
     { 
      echo " empty"; 
      exit(); 
     } else { 
      $query = "SELECT * FROM tbl_user WHERE email = '$email' AND password = '$password'"; 
      $result = $this->db->select($query); 
      if ($result != false) { 
       $value = $result->fetch_assoc(); 
       if ($value['status'] == '1') { 
        echo " disable"; 
        exit(); 
       } else { 
        Session::init(); 
        Session::set("login", true); 
        Session::set("userid", $value['userid']); 
        Session::set("username", $value['username']); 
        Session::set("name", $value['name']); 
       } 
      } else { 
       echo " error"; 
       exit(); 
      } 
     } 
    } 
+0

Проверьте https://api.jquery.com/event.preventdefault/. См. Также [MCVE] – miken32

+0

где - определение класса пользователя? –

+0

$ usr = new Пользователь(); добавили его на странице getlogin.php. –

ответ

1

Я считаю, что проблема в том, что отсутствие User определения класса, поэтому выход из этого сценария является фатальной ошибкой, и он идет прямо в else заявление внутри вызова Ajax.

В chrome вы можете проверить выходные данные вашего запроса ajax с помощью инструментов разработчика на вкладке «Сеть».

+0

$ usr = new Пользователь(); добавлено ли на getlogin.php странице –

+0

, не должно ли определение самого класса находиться внутри user.php? вы вызываете метод 'userLogin' класса' User', не определяя класс в любом месте. –

+0

класс Пользователь \t { \t \t приватный $ db; \t \t частный $ fm; \t \t функция __construct общественности() \t \t { \t \t \t $ this-> дб = новая база данных(); \t \t \t $ this-> fm = new Format(); } –

0

Измените тип своей кнопки на кнопку отправки.

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