0
ここで何が間違っているのか教えていただけますか?名字が空白の場合のみエラーが表示され、残りの文字(例:名字/メール/本文)は機能しません。電子メールの検証も機能しません。PHPでのフォームの検証が正しく機能していない
$error = "";
if (empty($fanme)) {
$error = "First name must not be empty !";
}
elseif (empty($lname)) {
$error = "Last name must not be empty !";
}
elseif (empty($email)) {
$error = "email must not be empty !";
}
elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$error = "Invalid Email Address !";
}
elseif (empty($body)) {
$error = "Message field not be empty !";
}
else {
$msg = "ok";
}
}
if (isset($error)) {
echo "<span style='color:red'>$error</span>";
}
if (isset($msg)) {
echo "<span style='color:green'>$msg</span>";
}
'if/elseif/else'ブロックのうち1つだけが一度に実行されます。あなたがコード化したように、あなたは最初のエラーメッセージがマッチしたことしか見ることができません。 – ceejayoz
@ ceejayozのコメントに追加するには、すべての 'elseif'を単純な' if'で置き換えます。実際には、 'elseif'ブロックは、その前の' if'または 'elseif'が存在しない場合にのみ実行されます。つまり、すべてのエラーメッセージを格納するために配列を使用する必要があります。そうしないと、最後にチェックされたエラーメッセージのみが取得されます。 – Kilazur