[Ajax] [PHP] - 登录表单,响应始终为空

时间:2018-02-16 19:16:47

标签: javascript php ajax forms login

我的登录表单有问题。每当我在登录表单中写入(正确或不正确)登录名和密码时,我的JS脚本都会返回错误,当我尝试打印“响应”时,它是空的。  有人可以帮忙吗?

$(document).ready(function(){
  $("#submit").click(function(e){
    e.preventDefault();
    var name = $("#name").val().trim();
    var paw = $("#paw").val().trim();
    $.ajax({
      url: 'check.php',
      type: 'POST',
      data: {name:name, paw:paw},
      success: function(response){
        if(response == 1){
          window.location= "home.php";
        }
        else{
          alert("error");
        }
      }
    });


  });
});

 <?php
session_start();
require_once 'dbconfig.php';
error_reporting(E_ALL ^ E_NOTICE);

if(isset($_POST['submit']))
{
  $name = trim($_POST['name']);
  $paw1 = trim($_POST['paw']);
  $paw = md5($paw1);
  try {
    $stmt = $pdo->prepare("SELECT * FROM user WHERE login=:nazwa and haslo=:has");
    $stmt->execute(array(':nazwa'=>$name, ':has'=>$paw));
    $count = $stmt->rowCount();
    $row = $stmt->fetch(PDO::FETCH_ASSOC);
    if($row['haslo']==$paw){
      echo 1;
      $_SESSION['user_session'] = $row['login'];
    }
    else {

      echo 0;
    }
  } catch (\Exception $e) {
    echo $e->getMessage();
  }

}
 ?>

1 个答案:

答案 0 :(得分:0)

删除if(isset($_POST['submit']))行。原因是按钮键值不是通过AJAX调用发送的。要进行验证,请执行print_r($_POST);

而是验证名称和密码变量不是empty()

if (!empty($_POST['name']) && !empty($_POST['paw'])) {

}

另请勿使用md5()作为密码。使用php&#39; s password_hash()进行哈希并password_verify()验证通过表单发布的密码是否与该用户的数据库中存储的哈希相匹配。