Giriş doğrulama ve PHP ve XML hataları dönen

2 Cevap php

Birkaç giriş alanları ile bir form var, ben geçmesi ve hepsi devam etmeden önce mevcut olduğundan emin olmak için kontrol etmek istiyorum.

Bu i kullanıyorum kodudur

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(); }

Alma sorun im, "hayır lat" verir, ben sadece bir URL girmek bile değildir. I notlar aşağı her şeyi doldurmak bile, hala "hayır lat" döndürür

Herhangi bir fikir?

2 Cevap

$ _POST Değerleri kontrol edin

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

Her yazı değişken ayarlanmış olduğundan emin olun ve adları aynı.

Bu (Olafur yorumuna bakınız) sorununuzu çözmek, ancak değil, burada tüm alanları üzerinde doğrulama yerine daha otomatik bir yolu:

$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() genellikle daha iyi kullanmak daha iyidir isset(). Boş bir dize isset() fonksiyonu ile true dönecektir.