繁体   English   中英

php 当输入值为空时显示错误信息:so with if(.isset.....) on the same page

[英]php display error message when input value is empty: so with if(!isset.....) on the same page

我正在向我的网站添加一个 html 表格。 我在表单验证方面遇到问题。 当用户不写 email 地址并且仍然提交表单时,我试图显示错误消息。 问题是:我试图在同一页面上这样做:所以我的代码,就像现在这样,在页面加载时直接显示错误消息(这是正常的,因为用户还没有输入 email 地址) .

我希望仅当用户单击提交 btn 但未输入他的 email 地址时,此消息才会显示在同一页面上(所以在这里:在 registerForm.php 上)。 有人可以帮我吗?

我把代码放在下面:

注册表格.php

`

<?php
session_start();

 //include a javascript file
 echo "<script type='text/javascript' src='registerForm.js'></script>";
?>

<div class="divCenter">
<div class="registerform-container">
    <form action="successForm.php" class="registerform-form" method="POST">
        <div>
            <label id="emailInput" for="email" class="registerform-form-label">Email</label>
            <div>
            <input type="email" class="registerform-form-control" id="email" name="email" aria-describedby="email-subscribe" placeholder="you@exemple.com">
            <div id="email-help" class="registerform-form-text">L'email utilisé lors de la création de compte.</div>
            </div>
        </div>
            <button id="button" class="registerform-btn disabled"  type="submit">Send</button>
   </form>
    <?php
        if(isset($_SESSION['statut'])){
    ?>
        <div class="success">
            <p><?php echo htmlspecialchars($_SESSION['statut']) ?></p>
        </div>';    
    <?php
       
        //une fois afficher il faut détruire le session
        unset($_SESSION['statut']);
        }

    ?>
</div>
</div>

successForm.php

<?php
   //include CSS Style Sheet
   echo "<link rel='stylesheet' type='text/css' href='registerForm.css' />";
   //include a javascript file
   echo "<script type='text/javascript' src='rfffff.js'></script>";
?>

<?php
if(!isset($_SESSION)) 
{ 
    session_start(); 
} 
?>

<?php
if(!isset($_POST['email']))
{
  echo 'you must enter your email address'; return;
    }

    try
    {
    $db = new PDO('mysql:host=localhost;dbname=mariawebsite;charset=utf8', 'root', 'root');
    }
    catch (Exception $e)
    {
        die('Erreur : ' . $e->getMessage());
    }

    $email = $_POST['email'];
    // Préparation
    $insertEmail = $db->prepare("INSERT INTO users_addresses(email) VALUES (:email)");
    // ajouter la ligne ci-dessous pour être sûr d'afficher toutes les erreurs.
    $db->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    // Exécution ! La recette est maintenant en base de données
    $insertEmail->execute([
    'email' => $email,
    ]);
    $_SESSION['statut'] = "$email submited successfully";
    header('Location: home.php');
?>


`

我希望仅当用户单击提交 btn 但未输入他的 email 地址时,此消息才会显示在同一页面上(所以在这里:在 registerForm.php 上)。 有人可以帮我吗?

试试这个:在 successForm.php

if(!isset($_POST['email']) || empty($_POST['email']))
{
  $msg =  'you must enter your email address';
 header('Location: registerForm.php?msg='.$msg); // this will redirect to register form with message

} else {
 //try catch and other code here
}

在 registerForm.php 表单开始之前和之后。 添加这个:

<?php if(isset($_GET['msg']) && $_GET['msg'] != "") {?>
        <div class="msg_error">
            <p><?php echo $_GET['msg']?></p>
        </div>
<?php } ?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM