<?php
if (intval($_GET['subj']) == 0) {
redirect_to("content.php");
}
if (isset($_POST['submit'])){
$errors =array();
$required_fields = array('menu_name','position','visible');
foreach($required_fields as $fieldname) {
if (!isset($_POST[$fieldname]) || (empty($_POST[$fieldname]) && $_POST[$fieldname] !=0)) {
$errors[] = $fieldname;
}
}
$fields_with_lengths = array('menu_name' => 30);
foreach($fields_with_lenhths as $fieldname => $maxlength ) {
if (strlen(trim(mysql_prep($_POST[$fieldname]))) > $maxlength ) {
$errors[] = $fieldname;}
}
if (empty($errors)) {
$id = mysql_prep($_GET['subj']);
$menu_name = mysql_prep($_POST['menu_name']);
$position = mysql_prep($_POST['position']);
$visible = mysql_prep($_POST['visible']);
$query = "UPDATE subjects SET
menu_name = '{$menu_name}',
position = {$position},
visible = {$visible}
WHERE id = {$id}";
$result = mysql_query($query, $connection);
if (mysql_affected_rows() == 1 ) {
$message = "栏目已成功更新";
}else{
$message = "栏目更新失败!";
$message .="<br />" . mysql_error();
}
}else{
$message = "表单中出现" . count($errors) . "处错误";
}
}?>PHP
if (intval($_GET['subj']) == 0) {
redirect_to("content.php");
}
if (isset($_POST['submit'])){
$errors =array();
$required_fields = array('menu_name','position','visible');
foreach($required_fields as $fieldname) {
if (!isset($_POST[$fieldname]) || (empty($_POST[$fieldname]) && $_POST[$fieldname] !=0)) {
$errors[] = $fieldname;
}
}
$fields_with_lengths = array('menu_name' => 30);
foreach($fields_with_lenhths as $fieldname => $maxlength ) {
if (strlen(trim(mysql_prep($_POST[$fieldname]))) > $maxlength ) {
$errors[] = $fieldname;}
}
if (empty($errors)) {
$id = mysql_prep($_GET['subj']);
$menu_name = mysql_prep($_POST['menu_name']);
$position = mysql_prep($_POST['position']);
$visible = mysql_prep($_POST['visible']);
$query = "UPDATE subjects SET
menu_name = '{$menu_name}',
position = {$position},
visible = {$visible}
WHERE id = {$id}";
$result = mysql_query($query, $connection);
if (mysql_affected_rows() == 1 ) {
$message = "栏目已成功更新";
}else{
$message = "栏目更新失败!";
$message .="<br />" . mysql_error();
}
}else{
$message = "表单中出现" . count($errors) . "处错误";
}
}?>PHP
foreach($required_fields as $fieldname)
{
if(!isset($_POST[$fieldname]) || empty($_POST[$fieldname]) || intval($_POST[$fieldname])<=0)
{
$errors[] = $fieldname;
}
}
无论是否成立,后续的代码都会被执行(empty($_POST[$fieldname]) && $_POST[$fieldname] !=0)
含义是 $_POST[$fieldname] 是大于0的数值,是否是你期望的?
foreach($required_fields as $fieldname) {
if (!isset($_POST[$fieldname]) || (empty($_POST[$fieldname]) && $_POST[$fieldname] !=0)) {
$errors[] = $fieldname;
}
}
这个函数,是否意味着,如果$_POST[$fieldname]没有设置,或者$_POST[$fieldname]是空值和0,则返回一个错误数组$errors[] = $fieldname,是不是这样呢?
但是,为什么在实际中就是检测不到呢?后面的代码都执行了。
另外昨天我说错了
empty($_POST[$fieldname]) && $_POST[$fieldname] !=0 表示的是
empty($_POST[$fieldname]) $_POST[$fieldname]为空
&& 同时
$_POST[$fieldname] !=0 $_POST[$fieldname]不等于0
那么这个表达式永远不会成立!既然你是抄书上的代码,那么就请先核对一下
……
将:if (!isset($_POST[$fieldname]) || (empty($_POST[$fieldname]) && $_POST[$fieldname] != 0)) {
$errors[] = $fieldname;
}改为: if (!isset($_POST[$fieldname]) || empty($_POST[$fieldname]) || $_POST[$fieldname] == 0) {
$errors[] = $fieldname; }
}
但问题是,为什么看视频上,原来的代码能够成功执行?