だから私はphpのフォームを検証しようとしています。
私の連絡フォームはあなたの典型的なフォームです
<form method="post" action="contact.php">
<table class="contact">
<tr>
<th>
<label for="name">Name</label>
</th>
<td>
<input type="text" name="name" id="name">
</td>
</tr>
<tr>
<th>
<label for="email">Email</label>
</th>
<td>
<input type="text" name="email" id="email">
</td>
</tr>
<tr>
<th>
<label for="message">Message</label>
</th>
<td>
<textarea name="message" id="message"></textarea>
</td>
</tr>
</table>
<input type="submit" value="Send">
これにphp検証を追加したいので、次を作成しました。
if (empty($_POST) === false) {
$errors = array();
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
if(empty($name) === true || empty($email) === true || empty($message) === true) {
$errors[] = 'Please fill out all the required forms!';
} else {
if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) {
$errors[] = 'Sorry please enter a valid email address';
}
if (ctype_alpha($name) === false) {
$errors[] = 'Sorry, name must contain only letters!';
}
}
print_r ($errors);
これを印刷しようとすると、配列にはフィールドに入力されているデータが表示され、すべての検証が正しく機能します。私が抱えている問題は、リスト内の配列をエコーアウトするためにphpを追加する次のステップです。
フォームの上に追加したコードは、検証の失敗に対して表示されたエラーを一覧表示することを想定したforeachループでした。
<?php
if (empty($errors) === false) {
echo '<ul>';
foreach($errors as $error) {
echo '<li>' , $error ,'</li>';
}
echo '</ul>';
}
?>
しかし、今の問題はこれです。フォームに入力するたびに、エラーはリストを生成せず、元の配列を生成するだけです。foreachが表示されていない場合です。
どんな提案や助けも素晴らしいでしょう!
みんなありがとう、