使用PHP和XML验证输入和返回错误

时间:2009-09-20 17:44:48

标签: php xml

我有一个包含多个输入字段的表单,我希望在继续之前检查以确保它们都存在。

这是我正在使用的代码

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”

有什么想法吗?

2 个答案:

答案 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()