Я пытаюсь создать простой пример для проверки формы, пустое поле или нет. Если поле не пустое действие, перенаправляйте меня на страницу ok.php, а если не обратно в formvalidation.php. и изменить поле css. У меня проблема с возвратом массива ошибок обратно в formvalidation.php и его тестирование для изменения css для поля ввода. Что я делаю не так?Механизм проверки базовой формы PHP
formvalidation.php
<?php require("includes/functions.php"); ?>
<?php
global $errors;
?>
<form action="posting.php" method="p">
<ul>
<li id="field">
<label for="field">Contact person </label>
<input
<?php
if (empty($errors)) {
echo "style=\"background-color: #ECECEC;\"";
} else {
if (in_array("field", $errors)) {
echo "style=\"background-color: red;\"";}
} else {
echo "style=\"background-color: #ECECEC;\"";
}
}
?>
type="text" name="field"/>
</li>
<li>
<input id="saveForm" class="button_text" type="submit" name="submit" value="Submit" />
</li>
</ul>
</form>
action.php
<?php require("includes/functions.php"); ?>
<?php
$errors = form_validation();
if (!empty($errors)) {
redirect_to("formvalidation.php");
} else {
redirect_to("ok.php");
}
?>
функция
<?php
function form_validation() {
$errors = array();
$required_fields = array('field');
foreach($required_fields as $fieldname) {
if (!isset($_POST[$fieldname]) || empty($_POST[$fieldname])) {
$errors[] = $fieldname;
}
}
return $errors;
}
Я изменил код действия с вашим, и я поставил session_start() в начало formvalidation.php, правильно? Но это не меняет css, так как я думаю, что он возвращает пустую $ error = $ _SESSION ['error']. Поле должно быть окрашено в красный цвет, если оно пустое, но оно остается серым. –
print_r ($ _ SESSION ['error']); и пост-вывод. сеанс должен начинаться с action.php слишком – qisho
Он выводит то, что должно было бы Array ([0] => поле) после публикации. Может быть проблема с хранением его в $ error. Как проверить whats в переменной, потому что echo $ error ничего не дает? Кроме того, следует отключить ($ _ SESSION ['error']); внизу страницы? –