2010-06-14 20 views
5

Sto creando uno script, in cui l'utente deve inserire un indirizzo IP valido. Come posso verificare che si tratti di un indirizzo IP valido? (Non ha bisogno di risolvere)Controllare se una variabile POST [] è un indirizzo IP?

Fondamentalmente $_POST['ip'] ha solo bisogno di essere tra i 0.0.0.0 e 255.255.255.255

+0

Non credo che vogliate convalidare 0.0.0.0 come IP valido ... – animuson

+0

@animuson: è un indirizzo di instradamento perfettamente valido. –

risposta

9

Se stai usando PHP> = 5.2, utilizzare l'estensione Filtro:

filter_var($ip, FILTER_VALIDATE_IP) 

Maggiori informazioni here e here.

+0

Scusa, non l'ho visto fino a dopo aver postato il mio. –

+1

Wow, è incredibilmente conveniente. Grazie! – Rob

0
  1. Split stringa "IP" da ""
  2. Verificare che ci siano quattro voci (ottetto) nell'array.
  3. Verifica: 0 < = ottetto < = 255
  4. Se si desidera ottenere più elaborato, è possibile verificare che l'IP non è in una rete privata, non è una rete multicast, o non è nel riservata spazio.

Modifica: utilizzare il metodo PHP integrato se disponibile! :)

+0

Cosa intendi per 4? – Rob

+0

Penso che intendessi: 0 ≤ ottetto ≤ 255. – Gumbo

1

Si potrebbe anche provare 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']).

più su preg_match()here

ci sono anche molti modelli per la convalida. Scegli quello più adatto a te.


Aggiornamento: Anche sull'utilizzo dei filtri. Non tutti i server hanno già PHP uguale o superiore a 5.2.0. Quindi puoi controllare la versione prima di usarli, ma i modi più IMHO logici sarebbero Filtri o PCRE.