我正在制作一个基本的内容管理系统,并且我一直在验证输入到表单中的数据。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