【问题标题】:php used for password validation用于密码验证的php
【发布时间】:2016-03-02 09:37:24
【问题描述】:

我将以下代码的一部分发布到另一个问题,以解决我遇到的问题,并找到了解决方案。我可以从我的 android 设备注册、登录和注销,这很好。但是,现在我得到了一些奇怪的东西。我添加了一个额外的功能,以验证 $user_pass 和 $confirm 密码变量是否相等(比较字符串)。但是我总是从这里收到一条 json 消息“密码不匹配”。

if($userPass!==$confirmPass){


        $don = array('result' =>"fail","message"=>"Passwords don't match");

 }

整个代码如下。

 <?php
  session_start();
  require "init.php";
  header('Content-type: application/json');

  $email = $_POST['email'];
  $user_name = $_POST['user_name'];

  $user_pass = $_POST['user_pass'];
  $passwordEncrypted = sha1($user_pass);  

  $confirmPass = $_POST['confirm_pass'];
  $confPasswordEncrypted = sha1($confirmPass);  

  $msg = "Congratulations. You are now registered to the most amazing app ever!";            

        if(!filter_var($email, FILTER_VALIDATE_EMAIL)){


            $don = array('result' =>"fail","message"=>"Please enter a valid email");

        }




        if($email && $user_name && $user_pass && $confirmPass && filter_var($email, FILTER_VALIDATE_EMAIL)){


        $sql_query = "select * from user_info WHERE email ='".mysqli_real_escape_string($con, $email)."' or user_name 
        ='".mysqli_real_escape_string($con, $user_name)."'";

        $result = mysqli_query($con, $sql_query);   

        $results = mysqli_num_rows($result);

        if ($results){
            $don = array('result' =>"fail","message"=>"Email or username exists.");
        }else{

            $sql_query = "insert into user_info values('$email','$user_name','$passwordEncrypted','$confPasswordEncrypted');";

            if(mysqli_query($con,$sql_query)){

                $don = array('result' =>"success","message"=>"Successfully registered!Well done");
                //mail($email,"Well done",$msg);
                $_SESSION['email']=$row['email'];
            }
        }
    } if(!$email){


        $don = array('result' =>"fail","message"=>"Please enter your email");                  


    }else if(!$user_name){


        $don = array('result' =>"fail","message"=>"Please enter your username");


    }else if(!$user_pass){


        $don = array('result' =>"fail","message"=>"Please enter a password");

     //The last if statement causes the problem.
    }else if($userPass!==$confirmPass){


        $don = array('result' =>"fail","message"=>"Passwords don't match");

    }


      echo json_encode($don);

?>

【问题讨论】:

  • 使用if($userPass!=$confirmPass){ 代替if($userPass!==$confirmPass){ 并检查它是否正常工作。
  • 仍然遇到同样的问题。
  • 也许他们真的不一样?你试过var_dump($userPass, $confirmPass)吗?
  • 我没有,因为我不使用 html 表单。 php 文件仅指定用于 android 设备。有了 strcmp(..) 函数,即使两个密码不同,我现在也可以注册了。
  • 请在提问前清理您的代码

标签: php android validation passwords


【解决方案1】:

尝试使用

if(!strcmp($userPass,$confirmPass))

而不是

if($userPass!==$confirmPass)

【讨论】:

    【解决方案2】:

    修复它。我在

    中有一个额外的括号
    if($userPass!==$confirmPass))
    

    所以我改成

    if($userPass!==$confirmPass)
    

    :)

    【讨论】:

      【解决方案3】:

      使用链接http://php.net/manual/en/function.strcmp.php中描述的strcmp方法

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-12
        • 2023-04-09
        • 2017-06-22
        • 2017-07-06
        相关资源
        最近更新 更多