【问题标题】:Message displays before clicking on the submit button在单击提交按钮之前显示消息
【发布时间】:2021-07-28 02:08:39
【问题描述】:

我目前正在学习一个教程,该讲师有一个表格,当他在没有输入任何信息的情况下单击“提交”按钮时,会显示一条消息“您必须完成所有字段”。问题出在我身上:我编写了与他相同的代码,但消息出现在页面加载开始时,即甚至没有点击提交按钮。

顺便说一句,他说我们将使用$_SESSION["message"]=null; 在我们加载表单页面时不显示该消息。

这里是 session.php 代码

<?php

session_start();
function Message(){
    if(isset($_SESSION["message"]))
    {
        $Output="<div class=\"message\">";
        $Output .= htmlentities($_SESSION["message"]);
        $Output .="</div>";
        $_SESSION["message"]=null;
        return $Output;
    }
}
?>

还有user_registration.php代码:

`

  <?php require("include/session.php"); ?>
<?php require_once("include/database.php"); ?>

<?php 

if(isset($_POST["submit"])){
  $Username=mysqli_real_escape_string($Connection,$_POST["Username"]);
  $Email=mysqli_real_escape_string($Connection,$_POST["Email"]);
  $Password=mysqli_real_escape_string($Connection,$_POST["Password"]);
  $ConfirmPassword=mysqli_real_escape_string($Connection,$_POST["ConfirmPassword"]);

}
if(empty($Username)&&empty($Email)&&empty($Password)&&empty($ConfirmPassword)){
  $_SESSION["message"]="All Fields must be filled out";

  
}else if($Password!==$ConfirmPassword){
  $_SESSION["message"]="Both passwords must be the same";

}
?>

<!DOCTYPE>

<html>
<head>
<title>
Register Now
</title>
<link rel="stylesheet" href="include/Styles.css">
</head>
<body>

    <div><?php echo Message(); ?></div>
  
<div id="centerpage">
    <form action="./user_registration.php" method="post">
    <fieldset>
    <span class="FieldInfo">Username:</span><br><input type="text" name="Username" value=""><br>
    <span class="FieldInfo">Email:</span><br><input type="email" name="Email" value=""><br>
    <span class="FieldInfo">Password:</span><br><input type="password" name="Password" value=""><br>
    <span class="FieldInfo">Confirme Password:</span><br><input type="password" name="ConfirmPassword" value=""><br>
    <br><input type="submit" name="submit" value="submit"><br>
    </fieldset>
    </form>
</div>
</body>
</html>

`

【问题讨论】:

  • 我认为这与您的“user_registration.php 代码”有关。我不确定,但我认为第一个 } 放错了地方。因此,此代码 if(empty($Username)&amp;&amp;empty($Email)&amp;&amp;empty($Password)&amp;&amp;empty($ConfirmPassword)){ $_SESSION["message"]="All Fields must be filled out"; 独立存在并始终返回 true。因此,您会立即收到有关空字段的消息,因为它们都是空的。
  • 会话已经存在。当你知道它已经显示时,用 session_destroy 销毁它
  • 顺便说一句,您应该将所有empty() 检查与|| 结合起来,而不是&amp;&amp;,所以如果任何字段为空,您就会抱怨。只有当 all 字段为空时,您的代码才会报错。
  • 你为什么使用mysqli_real_escape_string?删除它们
  • 如果你刚刚开始学习 PHP,那么你应该学习 PDO 而不是 mysqli。 PDO 更容易,更适合初学者。从这里开始phpdelusions.net/pdo & websitebeaver.com/…

标签: php session session-variables


【解决方案1】:

您必须检查 if (isset($_POST['submit'] )) 语句中的空输入。所以你必须改变它

If(isset($_POST[“submit”])){
$Username=mysqli_real_escape_string($Connection,$_POST[“Username”]);
$Email=mysqli_real_escape_string($Connection,$_POST[“Email”]);
$Password=mysqli_real_escape_string($Connection,$_POST[“Password”]);
$ConfirmPassword=mysqli_real_escape_string($Connection,$_POST[“ConfirmPassword”]); 
If(empty($Username)&&empty($Email)&&empty($Password)&&empty($ConfirmPassword)){
 $_SESSION[“message”]=”All Fields must be filled out”;
 }else if($Password!==$ConfirmPassword){
 $_SESSION[“message”]=”Both passwords must be the same”;
 }
 }

【讨论】:

    猜你喜欢
    • 2018-03-26
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多