Я делаю базовую систему управления контентом, и я застрял в проверке данных, вводимых в форму.Вопрос о проверке данных формы PHP
Например, одна форма предназначена для редактирования имени объекта (в меню навигации). Форма содержит несколько разных частей данных, но основное внимание уделяется поле «menu_name» (имя субъекта).
Должны быть проверены данные представления формы в «menu_name», чтобы убедиться, что она не пустая, и если она дает ошибку. Что происходит, так это то, что проверка формы не работает, когда я ничего не вписываю, скрипт продолжает редактировать имя объекта, в этом случае делает его пустым.
Это скрипт, который выполняется на форме представления:
if (isset($_POST['submit']))
{
// Process the form
// 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 errors occured, redirect
if(empty($errors))
{
// Perform update
// Assign POST data to variables
$id = $current_subject["id"];
$menu_name = mysql_prep($_POST["menu_name"]);
$position = (int) $_POST["position"];
$visible = (int) $_POST["visible"];
// 2. Perform database query
$query = "UPDATE subjects SET ";
$query .= "menu_name = '{$menu_name}', ";
$query .= "position = '{$position}', ";
$query .= "visible = '{$visible}' ";
$query .= "WHERE id = {$id} ";
$query .= "LIMIT 1";
$result = mysqli_query($connection, $query);
if ($result && mysqli_affected_rows($connection) >= 0)
{
// Success
$_SESSION["message"] = "Subject updated.";
redirect_to("manage_content.php");
}
else
{
// Failure
$message = "Subject update failed.";
}
}
}
Данные затем проверяется два функций пользовательских проверок, как вы можете видеть, второй один не моя забота, но первая функцию validate_presences (), здесь есть функция:
function validate_presences($requried_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";
}
}
}
Вы можете там увидеть, что он ссылается на функцию has_presence(), которая:
function has_presence($value)
{
return isset($value) && $value !== "";
}
Если у кого-то есть идеи о том, что не так, любая помощь приветствуется! Просто спросите, нужна ли вам дополнительная информация. Спасибо заранее!
Вы указали переменную '$ errors' перед вызовом функций проверки? – Pierre
$ errors = array(); определяется в начале страницы функций проверки. – Rubixryan
Попробуйте вернуть isset ($ value) &&! Empty ($ value); в функции has_presence – Pierre