Question

Ce code 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    }

Lance cet avertissement ...

  

Avertissement: gethostbyaddr ()   [function.gethostbyaddr]: l'adresse est   pas sous la forme a.b.c.d dans C: \ inetpub ... \ filename.php à la ligne 212

Il semble que $ ip soit vide.

Était-ce utile?

La solution

sur php.net, il est écrit ce qui suit:

  

La fonction getenv ne fonctionne pas si votre API de serveur est ASAPI (IIS).   Essayez donc de ne pas utiliser getenv ('REMOTE_ADDR') , mais $ _ SERVER ["REMOTE_ADDR"] .

Avez-vous peut-être essayé de le faire avec $ _ SERVER ?

Autres conseils

Pourquoi n'utilisez-vous pas

Pourquoi n'utilisez-vous pas

Pourquoi n'utilisez-vous pas

Pourquoi n'utilisez-vous pas

<*>

et

<*>SERVER['REMOTE_ADDR']

et

<*>SERVER['HTTP_X_FORWARDED_FOR']

et

<*>SERVER['REMOTE_ADDR']

et

<*>

Une meilleure solution a déjà été donnée. Mais toujours:

getenv('HTTP_X_FORWARD_FOR');

devrait être

getenv('HTTP_X_FORWARDED_FOR');

Ouais ... parfois les ordinateurs veulent avoir des chaînes qu'ils comprennent ;-)

Tout d’abord, getenv () prend une chaîne en tant que paramètre. Sur la ligne 207, vous devez utiliser:

getenv('HTTP_X_FORWARDED_FOR')

... au lieu de:

getenv(HTTP_X_FORWARDED_FOR)

Deuxièmement, accéder à ces variables via $ _SERVER est une solution plus fiable, car getenv () a tendance à afficher un comportement différent sur des plateformes différentes.

De plus, ces variables ne fonctionneront probablement pas si vous exécutez ce script via l'interface de ligne de commande.

Essayez un var_dump ($ ip); et voir ce que la variable contient.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top