【问题标题】:PHP With ajax if else not working and md5()?PHP 与 ajax 是否无法正常工作和 md5()?
【发布时间】:2017-06-15 04:38:57
【问题描述】:

当我执行我的 javascript 这段代码时,为什么只有 else 语句在工作,但如果不是,当我使用 md5($_POST['password']) 时无法登录?但是当不使用 md5 时一切正常

请帮帮我:)

这是我的数据库

这是我的javascript

<script type="text/javascript">
    $(document).ready(function() {
        $("form#form_login").submit(function(event){ 
            event.preventDefault();
            var formData = new FormData($(this)[0]);
            $.ajax({
                type:'POST',
                url :'../assets/js/utama/login.data.php',
                data:formData,
                async:false,
                cache:false,
                contentType:false,
                processData:false,
                success:function(data){ 
                    if(data == "success")
                    {
                        window.location = '../index.php?hal=home';
                    }else{
                        alert('error');
                    }
                }
            });
        });
        return false;
    });
    </script>

这是我的 php 文件

<?php
session_start();
if(isset($_POST['email'])){
    include "../../../konten/koneksi.php";
    $email = $_POST['email'];
    $pass  = md5($_POST['password'])
    $sql_login = "select * from user where email_user ='$email ' AND password_user='$pass'";
    $run_login = mysql_query($sql_login);
    $data = mysql_fetch_array($run_login);
    if(isset($data['email_user'])){
        $_SESSION['email_user'] = $data['email_user'];
        $_SESSION['status'] = $data['status'];
    }else{
        echo "alert('errorr')";
    }
}
?>

【问题讨论】:

  • 你说的是Jquery IF 语句还是PHP IF 语句?
  • 请不要使用 MD5 作为密码。密码哈希/密码验证
  • 回显 $data['email_user'] 会发生什么
  • 另外,你容易受到 SQL 注入的影响,需要修复。 mysql_* 函数已弃用,您需要使用 PDO 或 mysqli_*
  • @mkaatman 你能解释一下为什么不使用 MD5 作为密码吗?

标签: javascript php if-statement


【解决方案1】:
  • 您需要在您的 PHP 脚本响应中echo "success"
  • 分号(;) 缺少md5($_POST['password']);

    $email = $_POST['email'];
    $pass  = md5($_POST['password']);
    $sql_login = "select * from user where email_user ='$email' AND password_user='$pass'";
    $run_login = mysql_query($sql_login);
    $data = mysql_fetch_array($run_login);
    if(isset($data['email_user'])){
        $_SESSION['email_user'] = $data['email_user'];
        $_SESSION['status'] = $data['status'];
        echo "success";
    }else{
        echo "error";
    }
    

【讨论】:

    【解决方案2】:

    请确保所有“password_user”列都包含数据库中的 md5 字符串。因此,您必须在用户注册时存储 md5 作为密码。用户“reza”在数据库中有一个非 md5 条目。所以对于这个用户md5($_POST['password']) 将不会在数据库中匹配。

    并在PHP脚本的IF语句中写入echo 'success';

    【讨论】:

      【解决方案3】:

      在您的代码中,在您的选择查询中,$email 后面有空格,并且您还需要在执行 if 条件时回显成功。即兴创作你的 php 代码如下:

      <?php
          session_start();
          if(isset($_POST['email'])){
              include "../../../konten/koneksi.php";
              $email = $_POST['email'];
              $pass  = md5($_POST['password']);
              $sql_login = "select * from user where email_user ='".$email."' AND password_user='".$pass."'";
              $run_login = mysql_query($sql_login);
              $data = mysql_fetch_array($run_login);
              if(isset($data['email_user'])){
                  $_SESSION['email_user'] = $data['email_user'];
                  $_SESSION['status'] = $data['status'];
                 echo "success";
              }else{
                  echo "alert('errorr')";
              }
          }
          ?>
      

      希望这会有所帮助!

      【讨论】:

        【解决方案4】:

        是的,它总是会进入其他部分,因为你没有从 php 文件中获得生态成功,那么它怎么会成功!!!?? 将您的 php 脚本更改为

        <?php
        session_start();
        if(isset($_POST['email'])){
            include "../../../konten/koneksi.php";
            $email = $_POST['email'];
            $pass  = md5($_POST['password']);
            $sql_login = "select * from user where email_user ='$email ' AND password_user='$pass'";
            $run_login = mysql_query($sql_login);
            $data = mysql_fetch_array($run_login);
            if(isset($data['email_user'])){
                $_SESSION['email_user'] = $data['email_user'];
                $_SESSION['status'] = $data['status'];
                echo "success";
            }else{
                echo "error";
            }
        }
        ?>
        

        还标记不使用 mysql* 已弃用并在 PHP7 中完全删除。改用 mysqli*PDO

        【讨论】:

          猜你喜欢
          • 2013-03-21
          • 1970-01-01
          • 2018-02-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多