Я следую серии видеороликов, которая до сих пор была замечательной. Я в тупике участвую в части, которая дает вам некоторые функции проверки формы. Фактическая форма находится здесь в данный момент: http://leegster.com/leegster_test/public/manage_content.phpФункции проверки формы PHP не работают
Вот как функции вызываются в create_subject.php:
if (isset($_POST['submit'])) {
// Process the form
//$menu_name = $_POST["menu_name"];
$menu_name = mysql_prep($_POST["menu_name"]);
$position = (int) $_POST["position"];
$visible = (int) $_POST["visible"];
// validations
$required_fields = array("menu_name", "position", "visible");
validate_presences($required_fields);
$fields_with_max_lengths = array("menu_name" => 30);
validate_max_lengths($fields_with_max_lengths);
if (!empty($errors)) {
$_SESSION["errors"] = $errors;
redirect_to("new_subject.php");
}
А вот функции, как показано в validation_functions.php:
// * presence
// use trim() so empty spaces don't count
// use === to avoid false positives
// empty() would consider "0" to be empty
function has_presence($value) {
return isset($value) && value != "";
}
function validate_presences($required_fields) {
global $errors;
foreach($required_fields as $field) {
$value = trim($_POST[$field]);
if (!has_presence($value)) {
$errors[$field] = fieldname_as_text($field) . " can't be blank";
}
}
}
// * string length
// max length
function has_max_length($value, $max) {
return strlen($value) <= $max;
}
function validate_max_lengths($fields_with_max_lengths) {
global $errors;
// Expects an assoc. array
foreach($fields_with_max_lengths as $field => $max) {
$value = trim($_POST[$field]);
if (!has_max_length($value, $max)) {
$errors[$field] = fieldname_as_text($field) . " is too long";
}
}
}
Когда форма отправлена, вызываются validate_presences и validate_max_lengths, чтобы гарантировать, что ничего не осталось пустым и имя menu_name не должно превышать 30 символов. Страница должна обновляться, и ошибки должны отображаться (я могу включить этот код, если это необходимо).
Однако, когда я делаю пустую запись в форме, она позволяет мне это делать. Пустая запись отправляется в базу данных с успешным сообщением. Я не могу понять, почему это происходит с этими новыми функциями проверки, которые должны блокировать это. Насколько я могу судить, я сделал все шаг за шагом в видеоуроке.
Любая помощь очень ценится. Благодаря!
Как выглядит 'redirect_to()'? – jeroen