strcmp()没有显示正确的输出(PHP)

mal*_*ala 0 php strcmp

所以这是我的代码,问题是当我在两个字段中输入密码'malik'时,我得到strcmp()输出,当它显然应该为0时,我会附加一个图像以使自己清楚.另外,我尝试使用var_dump($ upassword)和var_dump($ ucpassword),我得到了两个字符串(5),所以没有空格.

在此输入图像描述

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Sign-UP</title>
</head>
<body>
  <form action="signup.php" method="post">
  <input type="text" name="uname" placeholder="enter the username">
  <input type="email" name="uemail" placeholder="enter the email" id="">
  <input type="password" name="upassword" placeholder="Password">
  <input type="password" name="ucpassword" placeholder="confirm password">
  <button type="submit" name="registor">Registor</button>
  </form>
</body>
</html>
<?php
if (isset($_POST['registor'])) {
  $uname = $_POST['uname'];
  $uemail = $_POST['uemail'];
  $upassword = (string)$_POST['upassword'];
  $ucpassword = (string)$_POST['ucpassword'];
  echo($uname."<br>");
  echo($uemail."<br>");
  echo($upassword."<br>");
  echo($ucpassword."<br>");
  if($uname == '' || $uemail == '' || $ucpassword = '' || $ucpassword = ''){
    die("Please fill all the fields");
  }
  echo(strcmp($upassword,$ucpassword));
  if(strcmp($upassword,$ucpassword) != 0){
    die("Passwords are not the same");
  }
 }
Run Code Online (Sandbox Code Playgroud)

Mar*_*aos 5

问题出在这里:

if($uname == '' || $uemail == '' || $ucpassword = '' || $ucpassword = ''){
  die("Please fill all the fields");
}
Run Code Online (Sandbox Code Playgroud)

您正在设置$ucpassword为空字符串.而不是第一次$ucpassword使用$upassword

它应该是这样的:

if($uname == '' || $uemail == '' || $upassword == '' || $ucpassword == ''){
  die("Please fill all the fields");
}
Run Code Online (Sandbox Code Playgroud)