Ich versuche, die PHP-Erweiterung filter_var()
zu validieren. Per Ссылка :
Validiert den Wert als URL (gemäß » Ссылка ), optional mit erforderlich Komponenten. Achten Sie darauf, dass eine gültige URL das HTTP-Protokoll nicht angibt http: // Daher ist möglicherweise eine weitere Validierung erforderlich, um die URL zu ermitteln verwendet ein erwartetes Protokoll, z.B. ssh: // oder mailto :. Notiere dass der Die Funktion findet nur ASCII-URLs, die gültig sind. internationalisiert Domänennamen (die Nicht-ASCII-Zeichen enthalten) schlagen fehl.
In Bezug auf Vorsicht, eine gültige URL darf das HTTP-Protokoll nicht angeben , meine unten stehenden Tests zeigen an, dass ein HTTP-Protokoll erforderlich ist ( URL 'stackoverflow.com/' is NOT considered valid.
). Wie interpretiere ich die Dokumentation falsch?
Wie verhindern URLs wie Ссылка die Echtheitsprüfung?
PS. Jegliche Kommentare zu meinem Ansatz, das Protokoll zu bereinigen, wären willkommen.
%Vor%AUSGABE:
%Vor% FILTER_VALIDATE_URL
verwendet parse_url()
, was leider 'https://https://'
als gültige URL parst (wie es wirklich eine gültige URIs RFC ist):
Sie könnten Ihre Funktion sanitazeURL
in:
Sie müssen aber immer noch prüfen, ob der Hostname nicht http
oder https
:
Wie interpretiere ich die Dokumentation falsch?
Die Spezifikation sagt nichts darüber aus, kein Protokoll zu haben - es besagt lediglich, dass das Protokoll möglicherweise kein HTTP ist.
Sie hacken das wichtige Stück des Satzes in Ihrem Zitat ...
Achten Sie darauf, dass eine gültige URL das HTTP-Protokoll http: // nicht angibt Eine weitere Validierung kann erforderlich sein, um festzustellen, ob die URL verwendet wird erwartetes Protokoll
Ein Protokoll ist erwartet , es kann oder darf nicht HTTP sein.
Tags und Links php validation