Función de validación de datos incorporada para URL

2

Tengo un formulario de front-end donde las personas pueden enviar la URL de su sitio web.

¿Realmente estoy verificando las URL en Wordpress con una función de PHP y me gustaría saber si hay una función incorporada que me permita hacer esto?

Esta es la función que realmente estoy usando:

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);
}
    
pregunta roastedtoast 09.03.2013 - 01:08

2 respuestas

5

Use esc_url( $url ) para las URL que deben mostrarse y esc_url_raw( $url ) si la URL debe enviarse a la base de datos.

  • El primero reemplazará los símbolos " & " con & .
  • El segundo es un envoltorio para el primero; simplemente suprimirá el escape de símbolos ".
  • Ambas funciones verifican el protocolo. Ver wp_allowed_protocols() para la lista: %código% Por lo tanto, una URL como 'http', 'https', 'ftp', 'ftps', 'mailto', 'news', 'irc', 'gopher', 'nntp', 'feed', 'telnet', 'mms', 'rtsp', 'svn', 'tel', 'fax', 'xmpp' no se transmitirá.

Estas funciones no son exactamente validadores . Ellos sanean el valor. Pero debe usarlos siempre que tenga una URL para guardar o mostrar.

También hay javascript:alert("Hacked!"); .

wp_validate_redirect( $location, $default ) es una URL aquí y $location una URL alternativa si el primer valor no se valida. Desde su bloque de documentos:

  

Valida una URL para usar en una redirección.

     

Comprueba si la ubicación $ está usando un host permitido, si tiene un valor absoluto   camino. Por lo tanto, un complemento puede establecer o eliminar los hosts permitidos hacia o desde la lista.

Tenga en cuenta que los hosts permitidos no incluyen todos los (sub) dominios de una instalación de sitios múltiples. No tengo idea de por qué.

    
respondido por el fuxia 09.03.2013 - 02:45
3

No hay una función que valide una URL, solo una que limpia una cadena para usar dentro de una URL ( sanitize_title ).

Hay un filtro PHP que validará las URL: FILTER_VALIDATE_URL .

    
respondido por el Milo 09.03.2013 - 01:14

Lea otras preguntas en las etiquetas