[英]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.