私は電子メールアドレスを検証しようとしているフォームを持っています。電子メールアドレスが正しくない場合は、「有効な電子メールアドレスを入力してください」という値が必要です。フォームの "email"入力ボックスに返されます。何が間違っているのですか?検証は行われていません。私は私の電子メールでフォーム情報を受け取り、一度投稿したユーザーは「ありがとう」ページに送られますが、検証は行われません。私は "電子メール"入力に何かを入れることができ、フォームが提出されます。PHPを使用した電子メールの検証
<form action="../php/contact.php" method="post">
<p>First Name:</p>
<input class="box_style" type="text" name="first_name" required maxlength="20" />
<p>Last Name:</p>
<input class="box_style" type="text" name="last_name" required maxlength="25" />
<p>Email:</p>
<input class="box_style" type="text" name="email" required maxlength="50" />
<p>Contact Number (optional):</p>
<input class="box_style" type="text" name="contact_number" maxlength="12" />
<p>How did you find us?</p>
<select class="box_style" name="how" required>
<option value="choose">Select...</option>
<option value="referal">Referal</option>
<option value="website">Website</option>
<option value="search">Search Engine</option>
<option value="card">Business Card</option>
</select>
<p>Enquiries:</p>
<textarea class="box_style" name="inquiries" cols="30" rows="10"></textarea>
<input class="box_style" type="submit" name="submit" value="Submit"/>
</form>
と、これはPHP
<?php
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
// define variables and set to empty values
$fName = $lName = $email = $cNum = $how = $enquiries = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$fName = test_input($_POST["first_name"]);
$lName = test_input($_POST["last_name"]);
$cNum = test_input($_POST["contact_number"]);
$how = test_input($_POST["how"]);
$enquiries = test_input($_POST["enquiries"]);
$email = test_input($_POST["email"]);
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
print "<p>Please type a valid email address.</p>";
header("Location: www.mysite/thankyou.com");
}};
$email_from = '[email protected]';
$email_subject = "New Inquiry";
$email_body = "You have received a new message from" ." ". "$fName" ." ". "$lName" ."\n".
"$inquiries"."\n".
"Referal Type:" ." ". "$how" ."\n".
"Contact Number:" ." ". "$cNum" ."\n";
$to = "[email protected]";
$headers = "From: $email_from \r\n";
$headers .= "Reply-To: $email \r\n";
mail($to,$email_subject,$email_body,$headers);
?>
では、あなたが
妥当性確認のように見えますが、正しいかどうかは問題ありません。 – Ice76
'print"
有効なメールアドレスを入力してください。
"; header( "Location:www.mysite/thankyou.com"); 'レスポンスを出力してすぐに別のページをロードします。したがって、応答は失われます。 – Martinはい@マーティンは正しいです。シンプルなフォーム処理スクリプトでこれを行う最善の方法は、すべてのロジックを1つのスクリプトに移動して、それ自身にポストすることです。ロジックをパーツに分割します。パーツには、要求が上部のポストであるかどうかをチェックし、そこにエラーを設定します。それから、すべてがOK(電子メールを送信する)か、そうでないセクションに落ち、通常は値が入力されてフォームが出力され、エラーがディスプレイに追加されます。 – gview