首页 > 解决方案 > 在单击提交按钮之前显示消息

问题描述

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

顺便说一句,他说我们将$_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>

`

标签: phpsessionsession-variables

解决方案


您必须检查 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”;
 }
 }

推荐阅读