我一直试图让这个工作,但我一直在解析错误:
if (isset($_POST['submit'])) {
if ( isset($_POST['agree']) == false ||
isset($_POST['name'] == false ||
isset($_POST['email'] == false ||
isset($_POST['title'] == false ||
isset($_POST['program'] == false ||
isset($_POST['course'] == false ||
isset($_POST['file'] == false ||) {
echo ' <font color="red"> Please complete all required fields </font><br><br> ';
}
}
在PHP中可以做这样的事吗?这是为了让我的代码更具可读性。
答案 0 :(得分:11)
是的,这是完全可能的,但是你有一个没有下面表达式的最后一个尾随||
并且你错过了一堆结束)
,这会给你解析错误。
此外,您可以将其缩写为
if (!isset($_POST['agree'], $_POST['name'], ...))
或
if (array_diff(array('agree', 'name', ...), array_keys($_POST)))
请注意,尽管所有这些都可能没有测试您想要测试的内容。如果您有表单,则所有这些字段都将设置。除非用户主动操作表单,否则将使用值""
(空字符串)提交所有字段,这会使isset
返回true
。您要么寻找empty
,要么进行更多自定义测试。
答案 1 :(得分:9)
嗯,如果你更正了括号并省略了最后一个||
,这个是有效的PHP代码:
if (isset($_POST['submit'])) {
if (!isset($_POST['agree']) ||
!isset($_POST['name']) ||
!isset($_POST['email']) ||
!isset($_POST['title']) ||
!isset($_POST['program']) ||
!isset($_POST['course']) ||
!isset($_POST['file'])
) {
echo '<font color="red">Please complete all required fields</font><br>';
}
}
顺便说一下,<font>
元素已经deprecated,而是使用CSS。
答案 2 :(得分:4)
这样做会不会更简单?
foreach(array('submit','agree','name','email','title','program','course','file') as $value) {
if(!isset($_POST[$value])) {
/* insert form incomplete routine here */
}
}
答案 3 :(得分:2)
您几乎失去了所有isset
的结束括号。你还有一个额外的'||'最后。
注意:错误消息非常清楚地说明了这一点:
Parse error: syntax error, unexpected T_IS_EQUAL, expecting ',' or ')' in ... on line 5