2013-06-27 29 views
6

Tại sao filter_var() chấp nhận và xác thực URL này http://http://www.google.com?filter_var() chấp nhận URL không hợp lệ

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

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

Tôi nghĩ điều này là sai. Bất kỳ giải pháp hoặc cố định cho điều này?

phpinfo()

enter image description here

+0

Tại sao bạn cho rằng url là sai? – zerkms

+2

@zerkms Có hai 'http: //' 's. –

+0

Rất tiếc, sự chú ý của tôi đã bị đánh cắp bởi 'com.ph' ở cuối) – zerkms

Trả lời

2

Có vẻ như bạn đã tìm thấy một lỗi trong PHP. Hướng dẫn sử dụng PHP cho biết FILTER_VALIDATE_URL xác nhận tính hợp lệ của uris theo http://www.faqs.org/rfcs/rfc2396.html

Nếu bạn đọc thông số, PHP rõ ràng không xác thực đúng theo hướng dẫn. Cụ thể, trong phần 3 (Các thành phần cú pháp URI), nó được định nghĩa rằng lược đồ (http trong trường hợp của bạn) chỉ có thể tồn tại một lần, và đứng trước dấu hai chấm duy nhất trong uri.

Bạn nên báo cáo lỗi này tại https://bugs.php.net/

Tìm việc tốt!

+1

Cảm ơn, đã gửi báo cáo lỗi cho việc này. https://bugs.php.net/bug.php?id=65141 –

Các vấn đề liên quan