Com a função PHP wp_http_validate_url() você verifica se uma URL é válida ou não, de acordo com a HTTP API.
$url = "https://www.painelwp.com.br/newsletter-wordpress-edicao-100/?teste=valor";
if ( wp_http_validate_url( $url ) ) {
// URL é válida
} else {
// URL inválida
}
Code language: PHP (php)
Diferente das funções esc_url() e esc_url_raw(), cujo foco é fazer a limpeza de caracteres inválidos de uma URL, a função wp_http_validate_url()
faz várias validações, dentre elas:
- Uso de protocolo HTTP ou HTTPS;
- Se houver porta, deve ser 80, 443 ou 8080;
- Ausência de
user
oupass
;
Mas isto não significa que você não precisa mais fazer a limpeza da URL depois do seu uso. Veja o exemplo abaixo:
$url = "https://www.painelwp.com.br/newsletter-wordpress-edicao-100/?teste=<script>alert('oi');</script>";
if ( wp_http_validate_url( $url ) ) {
// URL é válida
echo "URL é: " . $url;
} else {
// URL inválida
echo "URL inválida, digite uma nova URL.";
}
Code language: PHP (php)
A URL é válida, mas como não foi feito a limpeza o código em Java Script adicionado na URL será executado. A maneira segura de utilizar o código acima seria utilizar o esc_url()
na exibição da URL:
$url = "https://www.painelwp.com.br/newsletter-wordpress-edicao-100/?test=<script>alert('oi');</script>";
if ( wp_http_validate_url( $url ) ) {
// URL é válida
echo "URL é: " . esc_url( $url );
} else {
// URL inválida
echo "URL inválida, digite uma nova URL.";
}
Code language: PHP (php)
Deixe um comentário