OVH Cloud OVH Cloud

modifier dynamiquement $HTTP_SERVER_VARS['REMOTE_ADDR']

5 réponses
Avatar
clement
Bonjour,

je débute en PHP (version utilisée 4.3.2),
1) et j'aurais souhaité savoir s'il était possible de modifier
dynamiquement les valeurs de $HTTP_SERVER_VARS['REMOTE_ADDR'] et
$HTTP_ENV_VARS['REMOTE_ADDR'] en spécifiant des valeurs à l'aide d'une
l'URL (par exemple, forcer "REMOTE_ADDR" à prendre la valeur
"xxx.xxx.xxx.xxx" en lançant "mon_prog.php" par
"http://.../mon_prog.php?REMOTE_ADDR=xxx.xxx.xxx.xxx").

Est-ce possible ?


2) Et sinon, serait-ce possible en utilisant une des méthodes de la
librairie cURL en version 7.10.1 (par exemple, en faisant une requête
POST du style "curl_setopt($ch, CURLOPT_POSTFIELDS,
$CURLOPT_POSTFIELDS)" avec
"$CURLOPT_POSTFIELDS=REMOTE_ADDR=xxx.xxx.xxx.xxx") ?

J'ai fait plusieurs essais pour 1) et 2), mais ça n'a jamais marché
(alors que cela ne pose pas de problème d'écrire en dur, dans le
programme, "REMOTE_ADDR=xxx.xxx.xxx.xxx", et de fonctionner ensuite
avec cette nouvelle valeur... mais - bien évidemment - je ne peux pas
garder cette solution puisque l'adresse IP n'est pas figée).


Merci de vos réponses !

PS :
Et par extension, est-ce possible de modifier les valeurs stockées
dans les tableaux du style "$HTTP_SERVER_VARS[]", $HTTP_ENV_VARS[],
etc... ?

5 réponses

Avatar
P'tit Marcel
Bob écrivit:

1) et j'aurais souhaité savoir s'il était possible de modifier
dynamiquement les valeurs de $HTTP_SERVER_VARS['REMOTE_ADDR'] et
$HTTP_ENV_VARS['REMOTE_ADDR'] en spécifiant des valeurs à l'aide d'une
l'URL (par exemple, forcer "REMOTE_ADDR" à prendre la valeur
"xxx.xxx.xxx.xxx" en lançant "mon_prog.php" par
"http://.../mon_prog.php?REMOTE_ADDR=xxx.xxx.xxx.xxx").


possible mais idiot:
http://.../mon_prog.php?REMOTE_ADDR=xxx.xxx.xxx.xxx
$_SERVER['REMOTE_ADDR'] = $_GET['REMOTE_ADDR'];

au passage $HTTP_SERVER_VARS est désuet (deprecated) et la donnée
d'environnement REMOTE_ADDR n'identifie pas le client s'il passe par un
proxy.

Donc car il vaut nettement mieux faire :

if (!empty ($_GET['REMOTE_ADDR']))
$adresse_distante = $_GET['REMOTE_ADDR'];
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']
$adresse_distante = $_SERVER['HTTP_X_FORWARDED_FOR'];
else $adresse_distante = $_SERVER['REMOTE_ADDR'];

et employer ensuite la variable $adresse_distante


PS :
Et par extension, est-ce possible de modifier les valeurs stockées
dans les tableaux du style "$HTTP_SERVER_VARS[]", $HTTP_ENV_VARS[],
etc... ?


Oui mais pas moins idiot ;-)


--
P'tit Marcel
statistiques sur les forums modérés : http://www.centrale-lyon.org/ng/

Avatar
clement
Merci pour la réponse,
mais malheureusement je n'y ai pas trouvé la solution à mon problème,
qui est de modifier dynamiquement (par exemple à l'appel de l'URL) la
valeur de $_SERVER["REMOTE_ADDR"].

J'ai essayé plusieurs syntaxes du style :
"http://.../mon_prog.php?REMOTE_ADDR=xxx.xxx.xxx.xxx"
mais rien n'y fait (cf. fonction phpinfo()) ; je n'ai jamais réussi à
modifier dynamiquement la valeur de "REMOTE_ADDR".


Y'aurait-il un moyen avec cURL de modifier la valeur "REMOTE_ADDR" ?


Merci de vos réponses !
Avatar
bertrand

Merci pour la réponse,
mais malheureusement je n'y ai pas trouvé la solution à mon problème,
qui est de modifier dynamiquement (par exemple à l'appel de l'URL) la
valeur de $_SERVER["REMOTE_ADDR"].
...

Merci de vos réponses !


Tu veux modifier la valeur de cette "variable"? ou bien modifier
l'adresse du client?

Si c'est l'adresse de la variable, cela correspond à modifier la valeur
d'une pseudo variable donnant accès à une constante.

Si tu cherche à modifier l'adresse du client on entre dans la quatrième
dimension.
Aller hop d'un coup de script, j'envoie l'internaute lambda de Sarcelle
à Tombouctou :))


cordialement
--
Bertrand Perrotte

Webmaistre canoe.kayak.free.fr
secrétaire du Canoë Kayak Gennevilliers

Avatar
P'tit Marcel
Bob écrivit:

En fait, j'ai un programme "prog1.php" qui utilise cURL (7.10.1) pour
appeler une URL "http://www..../prog2.php", et ce que j'aurais
souhaité faire c'est modifier la valeur de
"$HTTP_SERVER_VARS['REMOTE_ADDR']" dans le code de "prog1.php" ! (je
ne veux pas modifier le code de "prog2").


Tout ça m'a l'air un peu louche... Tu utilises un script php mais tu ne
sais pas / peux pas en modifier le code ?

Cela dit, ta solution s'appelle auto_prepend_file et sa cousine s'appelle
php.ini ou httpd.conf ou .htaccess


Merci !


deren ;-)

--
P'tit Marcel

Avatar
P'tit Marcel
Bob écrivit:

Pour en revenir au problème de REMOTE_ADDR dynamique,
le fait que "http://www..../prog2.php?REMOTE_ADDR=xxx.xxx.xxx.xxx" ne
marche pas, est-ce que cela signifie que "REMOTE_ADDR" est une
constante, et donc que l'on ne peut pas en modifier sa valeur ???


non, c'est une "variable prédéfinie" dont on peut donc modifier la valeur
dans un script.

"Pour en revenir à ton problème", et au risque de me répéter, ta solution
s'appelle auto_prepend_file et sa cousine s'appelle
php.ini ou httpd.conf ou .htaccess

(lire doc chapitre 'run time configuration')


eça
--
P'tit Marcel