2013-06-27 10 views
6

filter_var()がこのURLを受け入れて検証するのはなぜですかhttp://http://www.google.comfilter_var()が無効なURLを受け入れる

$website = "http://http://www.google.com"; 

echo filter_var($website, FILTER_VALIDATE_URL); // This outputs the value of $website 

私はこれが間違っていると思います。任意の解決策またはこれのために固定?

phpinfo()

enter image description here

+0

なぜあなたはURLが間違っていると思いますか? – zerkms

+2

@zerkms 2つの 'http://'があります。 –

+0

最終的に 'com.ph'によって私の注意が盗まれました) – zerkms

答えて

2

あなたはPHPのバグを発見したように思えます。 PHPマニュアルでは、FILTER_VALIDATE_URLがurisをhttp://www.faqs.org/rfcs/rfc2396.html

に基づいて検証すると述べています。この仕様を読んだ場合、PHPはガイドラインに従って正しく検証されないことは明らかです。具体的には、セクション3(URI構文コンポーネント)では、スキーム(あなたの場合はhttp)が一度しか存在せず、URI内の唯一のコロンの前にあると定義されています。

あなたはそれを見つけることhttps://bugs.php.net/

良い仕事でこのバグを報告する必要があります!

+1

ありがとう、これのバグレポートを提出しました。 https://bugs.php.net/bug.php?id=65141 –

関連する問題