我有一个包含多个输入字段的表单,我希望在继续之前检查以确保它们都存在。
这是我正在使用的代码
if(isset($_POST['url'])){ $url = $_POST['url']; } else { echo "<error>no url</error></data></xml>"; exit(); }
if(isset($_POST['username'])){ $username = $_POST['username']; } else { echo "<error>no username</error></data></xml>"; exit(); }
if(isset($_POST['password'])){ $password = $_POST['password']; } else { echo "<error>no password</error></data></xml>"; exit(); }
if(isset($_POST['cachename'])){ $cachename = $_POST['cachename']; } else { echo "<error>no cachename</error></data></xml>"; exit(); }
if(isset($_POST['lat'])){ $lat = $_POST['lat']; } else { echo "<error>no lat</error></data></xml>"; exit(); }
if(isset($_POST['long'])){ $long = $_POST['long']; } else { echo "<error>no long</error></data></xml>"; exit(); }
if(isset($_POST['message'])){ $message = $_POST['message']; } else { echo "<error>no message</error></data></xml>"; exit(); }
if(isset($_POST['notes'])){ $notes = $_POST['notes']; } else { echo "<error>no notes</error></data></xml>"; exit(); }
if(isset($_POST['tags'])){ $tags = $_POST['tags']; } else { echo "<error>no tags</error></data></xml>"; exit(); }
我得到的问题,即使我只是输入一个URL,它返回“no lat”。即使我把所有内容都填入笔记中,它仍然会返回“no lat”
有什么想法吗?
答案 0 :(得分:1)
检查$ _POST
中的值echo "<pre>";
print_r($_POST);
echo "</pre>";
确保设置了每个post变量并且名称匹配。
答案 1 :(得分:0)
这不会解决您的问题(请参阅Ólafur的评论),但是,这是一种在所有字段上执行验证的更自动化的方式:
$required = array('url', 'username', 'password', 'cachename',
'lat', 'long', 'message', 'notes', 'tags');
while (list($i, $require)=each($required)){
if(empty($_POST[$require])){
die('<error>no ' . $require . '</error></data></xml>');
}else{
$$require = $_POST[$require];
}
}
PS:empty()
通常比isset()
更好用。空字符串将返回带有true
函数的isset()
。