Проверка правильности ввода и возврата ошибок с помощью PHP и XML - PullRequest
0 голосов
/ 20 сентября 2009

У меня есть форма с несколькими полями ввода, я хотел бы пройти и проверить, чтобы убедиться, что все они присутствуют, прежде чем продолжить.

Это код, который я использую

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». Даже когда я заполняю все до примечаний, он все равно возвращает «без лат»

Есть идеи?

Ответы [ 2 ]

1 голос
/ 20 сентября 2009

Проверить значения в $ _POST

<code>echo "<pre>";
print_r($_POST);
echo "
";

Убедитесь, что каждая переменная записи установлена ​​и имена совпадают.

0 голосов
/ 20 сентября 2009

Не то чтобы это решило вашу проблему (см. Комментарий Олафура), но есть более автоматизированный способ проверки всех ваших полей:

$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().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...