Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/253.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ajax和php-登录脚本_Php_Ajax - Fatal编程技术网

Ajax和php-登录脚本

Ajax和php-登录脚本,php,ajax,Php,Ajax,我正在尝试登录页面,但ajax方法有一个问题: $("#login").click(function(){ username=$("#user_name").val(); password=$("#password").val(); $.ajax({ type: "POST", url: "login.php", data: {name : username, pwd :

我正在尝试登录页面,但ajax方法有一个问题:

 $("#login").click(function(){

        username=$("#user_name").val();
        password=$("#password").val();
         $.ajax({
            type: "POST",
            url: "login.php",
            data: {name : username, pwd : password},
            success: function(html){
              if( ($.trim(html)) =='true')
              {
                $("#login_form").fadeOut("normal");
                        $("#shadow").fadeOut();
                        $("#profile").html("<a href='logout.php' id='logout'>Logout</a>");

              }
              else
              {
                    $("#add_err").html("Wrong username or password");
              }
            },
            beforeSend:function()
                {
                 $("#add_err").html("Loading...")
            }
        });
         return false;
    });
$(“#登录”)。单击(函数(){
用户名=$(“#用户名”).val();
密码=$(“#密码”).val();
$.ajax({
类型:“POST”,
url:“login.php”,
数据:{name:username,pwd:password},
成功:函数(html){
如果($.trim(html))=='true')
{
$(“登录表单”)。淡出(“正常”);
$(“#阴影”).fadeOut();
$(“#profile”).html(“”);
}
其他的
{
$(“#add_err”).html(“错误的用户名或密码”);
}
},
beforeSend:function()
{
$(“#添加错误”).html(“加载…”)
}
});
返回false;
});
login.php:

<?php  

 session_start();

 $username = $_POST['name'];
 //$username = $mysqli->real_escape_string($username);
 $password = ($_POST['pwd']);
 //$password = $mysqli->real_escape_string($password);

 $mysqli = mysqli_connect('localhost','root','','peer');
 $query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
 $result = mysqli_query($mysqli,$query)or die(mysqli_error());
 $num_row = mysqli_num_rows($result);
 $row=mysqli_fetch_array($result);
 if( $num_row >=1 ) {
  echo 'true';
  $_SESSION['user_name']=$row['username'];
 }
 else{
 echo 'false';
 }
?>

我发布到login.php用户名和密码,但显然没有得到任何回复,当我尝试只执行php脚本时,它工作正常。html对象看起来仍然是
false
。 你看到这里有什么错误吗

谢谢


编辑

这些就是我在这里看到的问题

  • 您的数据未正确编码。使用
    data:{name:username,pwd:password}
    而不是
    data:{name:username,pwd:password}
    以便jQuery为您正确编码
  • 您的响应可能有前导空格或尾随空格,因此请尝试
    if($.trim(html)='true')
  • 始终验证/清理输入,您应该使用,或者至少使用字段

    • 这些就是我在这里看到的问题

      • 您的数据未正确编码。使用
        data:{name:username,pwd:password}
        而不是
        data:{name:username,pwd:password}
        以便jQuery为您正确编码
      • 您的响应可能有前导空格或尾随空格,因此请尝试
        if($.trim(html)='true')
      • 始终验证/清理输入,您应该使用,或者至少使用字段
      试试这个:

      $("#add_err").html("Loading...");
      $.post('login.php',
          {'username': username, 'pwd': password},
          function(html){
              $("#login_form").fadeOut("normal");
              $("#shadow").fadeOut();
              $("#profile").html("<a href='logout.php' id='logout'>Logout</a>");
          }
      );
      
      他是100%正确的

      另一个可能有用的技巧是使用:

      console.log(variable);
      
      您传递的任何变量都将返回到控制台。您可以在使用的任何浏览器中按F12键查看控制台。在进行ajax调用之前,您可以传递用户名和密码,这样您就可以看到您是否真正得到了用户的输入。您还可以将html变量console.log记录下来,该变量将显示您是否收到服务器的响应。

      尝试以下操作:

      $("#add_err").html("Loading...");
      $.post('login.php',
          {'username': username, 'pwd': password},
          function(html){
              $("#login_form").fadeOut("normal");
              $("#shadow").fadeOut();
              $("#profile").html("<a href='logout.php' id='logout'>Logout</a>");
          }
      );
      
      他是100%正确的

      另一个可能有用的技巧是使用:

      console.log(variable);
      

      您传递的任何变量都将返回到控制台。您可以在使用的任何浏览器中按F12键查看控制台。在进行ajax调用之前,您可以传递用户名和密码,这样您就可以看到您是否真正得到了用户的输入。您还可以将html变量console.log记录下来,这将显示您是否收到服务器的响应。

      您是否尝试回显用户名和密码以检查您是否收到它们?您可以将ajax中的数据更改为:
      data:{name:username,pwd:password},
      如果($.trim(html)='true',则尝试执行此操作{…这不起作用,我只是学习使用ajax并连接到db..您是否尝试回显用户名和密码以检查您是否收到了它们?您可以将ajax中的数据更改为:
      数据:{name:username,pwd:password},
      如果($.trim(html)='true',请尝试执行此操作
      {…
      它不起作用,我只是学习使用ajax和连接到db。{code>console.log(html);get me
      Object{auth:false}
      我刚刚编辑了脚本,用pwd替换了密码。可能的问题是使用$mysqli->real\u escape\u字符串。我觉得md5可以消除任何恶意代码(我可能错了)。在没有真正的_escape_字符串的情况下尝试。您还可以进一步使用console.log。逐步注释PHP代码可能会对您有所帮助。一次只回显一个变量对我有很大帮助,我会从$result开始,然后是$num_row,然后是$rowI。我只需编辑我的当前版本,如何才能控制台.log()php变量??假设(在php文件中)您只回显一个变量。例如“echo$result”,然后您可以使用(在Javascript中)console.log(html),这样您就可以看到服务器所说的$resultit不起作用和
      console.log(html);
      get me
      Object{auth:false}
      我刚刚编辑了脚本,用pwd替换了密码。可能的问题是使用$mysqli->real\u escape\u字符串。我觉得md5可以消除任何恶意代码(我可能错了)。在没有真正的_escape_字符串的情况下尝试它。您还可以进一步使用console.log。逐步注释PHP代码可能会对您有所帮助。一次只回显一个变量对我有很大帮助,我会从$result开始,然后是$num_row,然后是$row。我只需编辑我的当前版本,如何可以控制台.log()PHP变量??比方说(在PHP文件中)您只回显一个变量。例如“echo$result”,然后可以使用(在Javascript中)console.log(html),这样您就可以看到服务器所说的内容$result@user1726810从你对另一个答案的评论来看,你似乎从未接触过
      login.php
      @user1726810从你对另一个答案的评论来看,你似乎从未接触过
      login.php