私は検証が必要な連絡先フォームを持っています。問題は、成功メッセージが表示されてから私が送信してしまうことです。明らかに、フォームが実際に検証をパスして送信されると、成功メッセージが表示されます。提出前に成功メッセージが表示される
<?php
$error = ""; $successMessage = "";
$fname = $email = $message = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$error .= "First name is required.<br>";
} else {
$fname = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$fname)) {
$error .= "Only letters and white space allowed.<br>";
}
}
if (empty($_POST["email"])) {
$error .= "Email is required.<br>";
} else {
$email = test_input($_POST["email"]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error .= "Invalid email format.<br>";
}
}
if (empty($_POST["content"])) {
$error .= "Message is required.<br>";
} else {
$message = test_input($_POST["content"]);
}
}
if ($error != "") {
$error = '<div class="formerror" role="alert"><p><strong>There were error(s) in your form:</strong><br></p>' . $error . '</div>';
} else {
$successMessage = '<div class="alert alert-success" role="alert">Your message was sent, we\'ll get back to you ASAP!</div>';
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
形式は以下のようになります。あなたが成功メッセージを作成している条件で
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<div class="cform">
<input type="text" class="contactfield cformbottom" id="name" placeholder="Your full name" name="name" value="<?php echo $fname;?>">
<input type="email" class="contactfield cformbottom" id="email" name="email" placeholder="Your email" value="<?php echo $email;?>">
<textarea class="contactfield" id="content" name="content" rows="3" placeholder="Your Message" value="<?php echo $message;?>"></textarea>
</div>
<input type="submit" class="newsbut" value="Submit">
</form><br>
<div id="error"><? echo $error.$successMessage; ?></div>
変数には、3項演算子または 'isset()'を使用します。 –