2017-01-16 24 views
-1

我想这个代码,用来登录,但它不工作。当我点击提交时,没有任何反应。当我尝试登录时,我总是得到一个错误的密码错误,但我的密码是正确的。我该怎么办?登录使用Ajax和PHP总是密码错误

我的HTML

<form class="form-horizontal" id="loginform" method="post"> 
        <div class="form-group"> 
         <label for="userid" class="col-sm-3 control-label">User ID</label> 
         <div class="col-sm-9 has-feedback"> 
          <input type="text" class="form-control" id="userid" name="userid" placeholder="Enter Your User ID" required> 
          <span class="glyphicon glyphicon-user form-control-feedback"></span> 
         </div> 
        </div> 
        <div class="form-group"> 
         <label for="password" class="col-sm-3 control-label">Password</label> 
         <div class="col-sm-9 has-feedback"> 
          <input type="password" class="form-control" id="password" name="password" placeholder="Enter Your Password" required> 
          <span class="glyphicon glyphicon-lock form-control-feedback"></span> 
         </div> 
        </div> 
        <div class="form-group"> 
         <div class="col-xs-4 col-xs-offset-8"> 
          <button type="submit" id="submit" class="btn btn-danger btn-block btn-flat">Sign In</button> 
         </div> 
        </div>     
       </form> 

我的PHP

<?php 
     $userid = security($_POST['userid']); 
       $password = security($_POST['password']); 

       $query = mysqli_query($link,"SELECT * FROM user WHERE USER_USERNAME = '".$userid."' AND USER_PASSWORD = '".$password."'"); 
       $numrows = mysqli_num_rows($query); 
       if ($numrows!==0) 
       { 
        while($row = mysqli_fetch_assoc($query)) 
        { 
         @$_SESSION['session_userid'] = $row['USER_USERNAME']; 
         @$_SESSION['session_accounttype'] = $row['ACCESS_ID']; 
        } 
        //Location Depends on the User Type 
        if($_SESSION['session_accounttype']=="1") 
        { 
          echo 'true'; 
        } 
        } 
       else 
       { 
        echo 'false'; 
       } 
     ?> 

我的JS

$(document).ready(function(){ 
    $("#add_err").css('display', 'none', 'important'); 
    $("#submit").click(function(){ 
      username=$("#userid").val(); 
      password=$("#password").val(); 
      $.ajax({ 
      type: "POST", 
      url: "../basefunction/login.php", 
      data: "userid="+username+"&password="+password, 
      success: function(html){  
      if(html=='true') { 
      //$("#add_err").html("right username or password"); 
      window.location="admin"; 
      } 
      else { 
      $("#add_err").css('display', 'inline', 'important'); 
      $("#add_err").html("<img src='images/alert.png' />Wrong username or password"); 
      } 
      }, 
      beforeSend:function() 
      { 
      $("#add_err").css('display', 'inline', 'important'); 
      $("#add_err").html("<img src='images/ajax-loader.gif' /> Loading...") 
      } 
      }); 
     return false; 
    }); 
}); 
+2

SQL注入漏洞,错误抑制运营商...当你调试这个地方专门失败?您希望将值发送到服务器吗? SQL查询是你期望的吗?该查询的结果是什么?服务器的实际响应是什么?响应中或PHP日志中是否有错误?执行它之后,您还应该检查SQL查询中的错误。 – David

+0

你没有'哈希'你的passowords?我的事情你有一个编码问题,但你不显示所有相关的代码在这里,所以我不能告诉! – JustOnUnderMillions

+0

我没有哈希我的密码,因为它不是必需的 –

回答

1

为什么其他的答案说话的盐密码?问题是问为什么密码是错误的。 我认为这段代码有问题 if($ _ SESSION ['session_accounttype'] ==“1”)

session_accounttype可能不是eq 1?

0

无法评论,所以... 这个例子有很多问题。

  1. 提交按钮将自动提交您的表单到“/”。在javascript中查看preventdefault来解决这个问题。

  2. 您正在使用AJAX后与查询字符串。这将使用jquery数据中的'data'属性完成:{'userid':username,'password':password}。然后在php中使用$ _POST ['userid]和$ _POST ['password']来获取值;

  3. 的Sql注入将成为一个问题。但我可以看到你在学习,希望这只是一个测试,以更好地理解数据库。

  4. 哈希密码

+0

是的,这只是一个测试,我知道如何预防注射,我只是想尝试登录 –

+0

@ShermaineChaingan AJAX:“'我知道如何防止注射“ - 那你为什么不这样做?这个问题很可能是因为注入漏洞,你的SQL查询失败了。如果你能消除问题的可能来源,那就这样做,问题本身可能会变得没有实际意义。 – David

+0

我找到了你正在使用的教程。我建议你试试另一个。可能是http://www.codingcage.com/2015/11/ajax-login-script-with-jquery-php-mysql。HTML然而,这是使用jQuery的验证,可能超出你的范围。 –