Neden sadece bu url için return FALSE FILTER_VALIDATE_URL?

3 Cevap php

i Aşağıdaki kodu vardır:

<?php
$pictureurl="http://icons3.iconfinder.netdna-cdn.com/data/icons/pool/poolbird.png";
if(filter_var($pictureurl, FILTER_VALIDATE_URL) === FALSE){
echo "Invalid Url";
exit;
}else{
echo "Works!";
}
?>

Bu yukarıdaki url için ekranda "geçersiz url" (YANLIŞ), ancak diğer basit URL'ler için. Bu bir hata mı? Hatta görüntüyü erişebilirsiniz.

Ve en önemlisi bunun için çözüm ne olduğunu?

Teşekkürler

3 Cevap

PHP < '-' (http://bugs.php.net/51192) 5.2.13 içeren adresler dikkate FILTER_VALIDATE_URL bir hata içeriyor. Siz php kopyanızı yükseltmek veya farklı bir filtreleme mekanizması kullanmanız gerekir ya.

Bu kod yazdırır "çalışıyor!" benim için. PHP hangi sürümü kullanıyorsunuz? Eğer içeren bir PHP sayfasına link gönderebilir miyim:

<?php phpinfo(); ?>

Ayrıca, bkz this question.

Geçerli bir URL filtre çalışırken PHP 5.2.13 Koşu, ben bu cevabı alıyorum:

php > var_dump(filter_var("http://www.asdf-asdf.com", FILTER_VALIDATE_URL));
bool(false)

Bu ben dönmek bekliyoruz woukd açıkça ne değildir. Etki geçerlidir.

This has evidently been fixed now, and will be included in PHP 5.3.3 and 5.2.14, more info in this bugreport: http://bugs.php.net/bug.php?id=51192