WordPress fournit une fonction utile appelée is_email()
qui vérifie si une adresse email donnée est valide. Existe-t-il une fonction similaire disponible pour vérifier si une URL est valide?
J'ai essayé is_url()
mais c'était un voeu pieux de ma part.
Utiliser la fonction php native Validateur de filtres
if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) {
die('Not a valid URL');
}
Je sais que ceci est un ancien message, mais pour tous les visiteurs, il convient également de considérer les WP fonctions esc_url()
et esc_url_raw()
, ce dernier étant sans danger pour les entrées de base de données, etc. encoder des entités. esc_url()
encode des entités et est donc bon pour l'affichage aux utilisateurs.
Dans le source vous pouvez voir que esc_url()
vérifie la liste blanche des protocoles et de la structure autorisés et évite ainsi certaines des vulnérabilités de FILTER_VALIDATE_URL
signalées par le lien créé par @tobltobs.
J'ai trouvé wp_http_validate_url
plutôt pratique pour vérifier si une chaîne est une URL valide ou non tout en travaillant sur mon projet.
Prenez une référence à partir d’ici: https://developer.wordpress.org/reference/functions/wp_http_validate_url/
Par exemple:
$val = 'http://somevalidurl.com';
if ( wp_http_validate_url( $val ) ) {
// It's valid URL;
} else {
// It's NOT valid URL;
}
Il renvoie l'URL elle-même si elle est valide, sinon false.
Pour garantir que l'URL soumise par l'utilisateur est valide et sûre pour stocker et afficher ultérieurement, je suggère
esc_url_raw($url) === $url
esc_url_raw()
, comme @orionrush mentionné ci-dessus, nettoie l'URL en supprimant tout élément non valide ou malveillant. Donc, si la chaîne n'a rien d'invalide ou de malveillant, c'est ok.
Par exemple
if( esc_url_raw($url) === $url ) {
// URL is valid. Use it...
} else {
// URL is invalid or malicious. Don't use it...
}
J'ai écrit un article de blog plus long à ce sujet ici: https://cmljnelson.wordpress.com/2018/08/31/url-validation-in-wordpress/