Domanda

Questo codice PHP ...

207    if (getenv(HTTP_X_FORWARDED_FOR)) {
208        $ip   = getenv('HTTP_X_FORWARD_FOR');
209        $host = gethostbyaddr($ip);
210    } else {
211        $ip   = getenv('REMOTE_ADDR');
212        $host = gethostbyaddr($ip);
213    }

Genera questo avviso ...

  

Avviso: gethostbyaddr ()   [function.gethostbyaddr]: l'indirizzo è   non in formato a.b.c.d in C: \ inetpub ... \ nomefile in linea 212

Sembra che $ ip sia vuoto.

È stato utile?

Soluzione

su php.net dice quanto segue:

  

La funzione getenv non funziona se l'API del server è ASAPI (IIS).   Quindi, prova a non usare getenv ('REMOTE_ADDR') , ma $ _SERVER [" REMOTE_ADDR "] .

Forse hai provato a farlo con $ _SERVER ?

Altri suggerimenti

Perché non usi

Perché non usi

Perché non usi

Perché non usi

<*>

e

<*>SERVER['REMOTE_ADDR']

e

<*>SERVER['HTTP_X_FORWARDED_FOR']

e

<*>SERVER['REMOTE_ADDR']

e

<*>

È già stata fornita una soluzione migliore. Ma comunque:

getenv('HTTP_X_FORWARD_FOR');

dovrebbe essere

getenv('HTTP_X_FORWARDED_FOR');

Sì ... a volte i computer vogliono avere stringhe che capiscono ;-)

Prima di tutto, getenv () accetta una stringa come parametro. Alla linea 207, dovresti usare:

getenv('HTTP_X_FORWARDED_FOR')

... anziché:

getenv(HTTP_X_FORWARDED_FOR)

In secondo luogo, l'accesso a queste variabili tramite $ _SERVER è una soluzione più affidabile, in quanto getenv () tende a mostrare comportamenti diversi su piattaforme diverse.

Inoltre, queste variabili probabilmente non funzioneranno se si esegue questo script tramite CLI.

Prova a var_dump ($ ip); e vedi cosa contiene la variabile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top