PHP
if (intval($_GET['subj']) == 0) { 这样试试:
foreach($required_fields as $fieldname)
{
if(!isset($_POST[$fieldname]) || empty($_POST[$fieldname]) || intval($_POST[$fieldname]) {
$errors[] = $fieldname;
}
}
从 if (isset($_POST['submit'])){ 开始的判断形同虚设!
无论是否成立,后续的代码都会被执行
(empty($_POST[$fieldname]) && $_POST[$fieldname] !=0)
含义是 $_POST[$fieldname] 是大于0的数值,是否是你期望的?
非常感谢以上两位的回答。我正在学习一个教程,是按照教程一步一步做下来的。一样的代码,却和示例中的结果不同。很想知道是什么原因。
$required_fields = array('menu_name','position','visible');
foreach($required_fields as $fieldname) {
if (!isset($_POST[$fieldname]) || (empty($_POST[$fieldname]) && $_POST[$fieldname] !=0)) {
$errors[] = $fieldname;
}
}
这个函数,是否意味着,如果$_POST[$fieldname]没有设置,或者$_POST[$fieldname]是空值和0,则返回一个错误数组$errors[] = $fieldname,是不是这样呢?
但是,为什么在实际中就是检测不到呢?后面的代码都执行了。
既然是流程控制,那么你的后续代码要放在 else 分支中。因为你判断的是传入了非法数据
另外昨天我说错了
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)) {
……
我看的是视频,代码是我一步一步写下来的,先验证,不对了在和视频上的对,对过好多遍了,还是看不出哪里有什么不同的地方。感谢各位的回复。我再把上面的代码格式整理下,方便诸位阅读。
问题解决了。按照以上两位的建议。
将:if (!isset($_POST[$fieldname]) || (empty($_POST[$fieldname]) && $_POST[$fieldname] != 0)) {
$errors[] = $fieldname;
}
改为: if (!isset($_POST[$fieldname]) || empty($_POST[$fieldname]) || $_POST[$fieldname] == 0) {
$errors[] = $fieldname; }
}
但问题是,为什么看视频上,原来的代码能够成功执行?