【问题标题】:PHP echo not returning <div> correctlyPHP echo 未正确返回 <div>
【发布时间】:2020-03-21 11:00:18
【问题描述】:

谁能告诉我为什么&lt;?php echo $userPasswordError; ?&gt; 行在我输入包含超过 1 个字符的密码时不返回任何内容(空)而不是 &lt;div class="invalid-feedback"&gt;Too long.&lt;/div&gt;

如果我更改此行:$userPasswordError = '&lt;div class="invalid-feedback"&gt;Too long.&lt;/div&gt;';

有了这个$userPasswordError = 'Too long.';,它就可以工作了!输出为“太长”。

<?php
$user = $userPassword = '';
$userError = $userInvalid = $userPasswordError = $userPasswordInvalid = '';
$isvalidOrInvalidUser = $isvalidOrInvalidUserPassword = '';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  // Verify username.
  if (!empty($_POST["user"])) {
    if (strlen($_POST["user"]) <= 32) {
      $user = $_POST["user"];
      $userError = '<div class="valid-feedback">Correct.</div>';
      $isvalidOrInvalidUser = 'is-valid';
    }
    else {
      $userInvalid = $_POST["user"];
      $userError = '<div class="invalid-feedback">Too long.</div>';
      $isvalidOrInvalidUser = 'is-invalid';
    }
  }
  else {
    $userError = '<div class="invalid-feedback">Please, add username.</div>';
    $isvalidOrInvalidUser = 'is-invalid';
  }
  // Verify password.
  if (!empty($_POST["userpassword"])) {
    if (strlen($_POST["userpassword"]) <= 1) {
      $userPassword = $_POST["userpassword"];
      $userPasswordError = '<div class="valid-feedback">Correct.</div>';
      $isvalidOrInvalidUserPassword = 'is-valid';
    }
    else {
      $userPasswordInvalid = $_POST["userpassword"];
      $userPasswordError = '<div class="invalid-feedback">Too long.</div>';
      $isvalidOrInvalidUserPasword = 'is-invalid';
    }
  }
  else {
    $userPasswordError = '<div class="invalid-feedback">Please, add password.</div>';
    $isvalidOrInvalidUserPassword = 'is-invalid';
  }
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
  <div class="form-row">
    <div class="col-md-3 mb-3">
      <label for="user">Username :</label>
      <input type="text" class="form-control <?php echo $isvalidOrInvalidUser; ?>" id="user" name="user" placeholder="User here" value="<?php echo $user.$userInvalid; ?>">
      <?php echo $userError; ?>
    </div>
    <div class="col-md-3 mb-3">
      <label for="userpwd">User password :</label>
      <input type="password" class="form-control <?php echo $isvalidOrInvalidUserPassword; ?>" id="userpassword" name="userpassword" value="<?php echo $userPassword.$userPasswordInvalid; ?>">
      <?php echo $userPasswordError; ?>
    </div>
  </div>
  <button class="btn btn-primary" type="submit">Add</button>
</form>
</body>
</html>

【问题讨论】:

  • 你的代码对我来说很好3v4l.org/GYMqD 也许invalid-feedback 类有一个display: none
  • 显示器没有:无。如果我输入一个大于 32 个字符的用户名(调用相同的“div 类”),它可以正常工作。我不明白为什么...

标签: php html bootstrap-4


【解决方案1】:

我终于知道为什么了。

  $userPasswordError = '<div class="invalid-feedback">Too long.</div>';
  $isvalidOrInvalidUserPasword = 'is-invalid';

isvalidOrInvalidUserPasword 的变量名不对,应该是$isvalidOrInvalidUserPassword(密码处少了一个s)。

如果输入没有类is-invalid,错误信息将不可见!

希望这会有所帮助!

【讨论】:

  • 该死...非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多