2010-06-14 11 views
5

Estoy haciendo un script, en el cual el usuario necesita ingresar una dirección IP válida. ¿Cómo puedo verificar que sea una dirección IP válida? (No tiene que resolver)Verificando si una variable POST [] es una dirección IP?

Básicamente $_POST['ip'] sólo tiene que estar entre 0.0.0.0 y 255.255.255.255

+0

No creo que quiera validar 0.0.0.0 como una dirección IP válida ... – animuson

+0

@animuson: Es una dirección de ruta perfectamente válida. –

Respuesta

9

Si está ejecutando PHP> = 5.2, utilice la extensión Filtro:

filter_var($ip, FILTER_VALIDATE_IP) 

Más información here y here.

+0

Lo siento, no vi esto hasta después de haber publicado el mío. –

+1

Guau, eso es increíblemente conveniente. ¡Gracias! – Rob

0
  1. dividir su cadena "IP" por ""
  2. Verifique que haya cuatro entradas (octetos) en la matriz.
  3. Verificar: 0 = < octeto < = 255
  4. Si desea obtener más elegante, se puede comprobar que la IP no está en una red privada, no es una red de multidifusión, o no se encuentra en la reserva espacio.

Editar: ¡Usa el método PHP incorporado si está disponible! :)

+0

¿Qué quieres decir con 4? – Rob

+0

Creo que quisiste decir: 0 ≤ octeto ≤ 255. – Gumbo

1

También puedes probar preg_match(/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/, $_POST['ip']).

Más sobre preg_match()here

También hay muchas pautas de validación. Elija el más adecuado para usted.


Actualizar: También puedes utilizar los filtros. No todos los servidores tienen PHP igual o superior a 5.2.0. Así que puedes verificar la versión antes de usarla, pero en mi humilde opinión las formas más lógicas serían Filters o PCRE.

Cuestiones relacionadas