J'ai un formulaire frontal où les gens peuvent soumettre l'URL de leur site Web.
En fait, je vérifie les URL dans Wordpress avec une fonction PHP et j'aimerais savoir s'il existe une fonction intégrée qui me permet de le faire.
C'est la fonction que j'utilise réellement:
function validateURL($URL) {
$v = "/^(http|https|ftp):\/\/([A-Z0-9][A-Z0-9_-]*(?:\.[A-Z0-9][A-Z0-9_-]*)+):?(\d+)?\/?/i";
return (bool)preg_match($v, $URL);
}
Utilisez esc_url( $url )
pour les URL à afficher et esc_url_raw( $url )
si l'URL doit être envoyée à la base de données.
&
par &
.wp_allowed_protocols()
pour la liste: 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'Gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'svn', 'tel', 'fax', 'xmpp'
Ainsi, une URL telle que javascript:alert("Hacked!");
ne sera pas transmise.Ces fonctions ne sont pas exactement des validateurs . Ils nettoient la valeur. Mais vous devriez les utiliser chaque fois que vous avez une URL à enregistrer ou à afficher.
Il y a aussi wp_validate_redirect( $location, $default )
.
$location
est une URL ici et $default
une URL de secours si la première valeur n'est pas validée. À partir de son bloc de documentation:
Valide une URL à utiliser dans une redirection.
Vérifie si l'emplacement $ utilise un hôte autorisé, s'il possède un chemin absolu. Un plugin peut donc définir ou supprimer des hôtes autorisés de la liste.
Notez que les hôtes autorisés n'incluent pas tous les (sous) domaines d'une installation multisite. Aucune idée pourquoi.
Il n'y a pas de fonction qui valide une URL, juste une qui nettoie une chaîne pour l'utiliser dans une URL ( sanitize_title
).
Il existe un filtre PHP qui validera les URL: FILTER_VALIDATE_URL
.