皆さん、ありがとうございます!PHPフォームは、電子メールと名前が無効であっても電子メールを送信します
私は初めてPHPを試してみましたが、私はPHPフォームを作成していましたが、これまでフィールドを検証できるようにしていましたし、フォームがフィールド空です。 ... "名前"と "電子メール"フィールドにはバリデーションフィルタがあります... "名前"は "文字と空白"以上を許可せず、 "電子メール"は "無効な電子メールフォーマット" 。
例: 名:Rob3rtが...それは数 メールを持っている:何も...件名の電子メールアドレス ではなく、メッセージには、検証フィルタを持っていない...
問題があること、です「名前」と「電子メール」に書かれた情報が一致しない場合でも、フォームは電子メールを送信します。
Q:フォームを保持するにはどうすればよいですか?すべてのフィールドに正しい情報が入るまで電子メールを送信しますか?これは、エラーが発生したかどうかをチェックしませんので、あなたがメールを送信する前に、フィールドが空でない場合は、あなただけチェックされ、機能していません
// This is the validation code //
<?php
// define variables and set to empty values
$nameErr = $emailErr = $commentErr = $subjectErr = "";
$name = $email = $comment = $subject = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "<h5>Name is required</h5>";
} else {
$name = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
$nameErr = "<h5>Only letters and white space allowed</h5>";
}
}
if (empty($_POST["email"])) {
$emailErr = "<h5>Email is required</h5>";
} else {
$email = test_input($_POST["email"]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "<h5>Invalid email format</h5>";
}
}
if (empty($_POST["comment"])) {
$commentErr = "<h5>Message is required</h5>";
} else {
$comment = test_input($_POST["comment"]);
}
if (empty($_POST["subject"])) {
$subjectErr = "<h5>Subject is required</h5>";
} else {
$subject = test_input($_POST["subject"]);
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
<form>
Form comes here
</form>
// This is the sending code... I think the problem is here... //
<?php
if($_POST['name']!="" && $_POST['email']!="" && $_POST['comment']!="" && $_POST['subject']!="") {
$to = "[email protected]";
$email = "From: " . $email . "\r\n";
$subject = "" . $subject . "\r\n";
$comment = "" . $comment . "\r\n";
mail($to,$subject,$comment,$email);
echo "good";
}
else {
"bad";
}
?>
**多すぎるコード**。あなた自身でこれをトラブルシューティングするより良い仕事をする必要があります。私たちはデバッガーではありません。あなたは**問題を分離し、そこからデバッグする必要があります。あなたが立ち往生している場合は、[**最小限で完全で検証可能な例**](http://stackoverflow.com/help/mcve)で**動作していないことの**明確な説明を提供してください。私は** [質問] **良い質問と** [完璧な質問](http://codeblog.jonskeet.uk/2010/08/29/writing-the-perfect-question/)**を読むことをお勧めします。また、** [ツアー] **を読んで** [this](// meta.stackoverflow.com/questions/347937/)**を読んでください。 –
あなたのメールを送信するときには、空白のフォーム値以外はチェックしません。そのため、他の無効なデータが許可されます。 –
私は既に問題を抱えていると思うポイントにコードを圧縮しました...しかし、私は送信コードの中で何を正確に書かなければならないのか分かりません... – Manuel