[PHP] ip opvragen: REMOTE_ADDR of HTTP_X_FORWARDED

Pagina: 1
Acties:
  • 212 views sinds 30-01-2008
  • Reageer

  • glrfndl
  • Registratie: Juni 1999
  • Niet online
Ik weet dat je het ip van een gebruiker opvraagt met de volgende code:
PHP:
1
2
3
4
5
6
7
8
9
10
<?
if (getenv(HTTP_X_FORWARDED_FOR))  
{
  $ip = getenv(HTTP_X_FORWARDED_FOR);
}
else 
{
  $ip = getenv(REMOTE_ADDR);
}
?>

waar wat is nou het verschil tussen die remote_addr en die http_x_forwarded_for :?

Prepare for unforeseen consequences


  • nielsj
  • Registratie: Juli 1999
  • Laatst online: 03-09 14:42

nielsj

ondertitel

Als de http request door een proxy komt (squid of zo), wordt de header HTTP_X_FORWARDED_FOR toegevoegd,
als het rechtstreeks door de client opgevraagd is, is ie dus niet gezet (dat verklaart die if)

blup blup


  • glrfndl
  • Registratie: Juni 1999
  • Niet online
aha, dus zelfs al gebruikt iemand een proxy, dan nog heb je kans om het ip te achterhalen, dat is leuk :)

Prepare for unforeseen consequences


  • AVL
  • Registratie: Januari 2000
  • Laatst online: 25-09-2022

AVL

OHMSS

Als je REMOTE_ADDR gebruikt om het IP te achterhalen, krijg je soms het IP van de ISP Cache server.
Wanneer dit gebeurt, wordt HTTP_X_FORWARDED_FOR ingesteld met het IP van de gebruiker. Door eerst te checken of HTTP_X_FORWARDED_FOR ingesteld is, en er in REMOTE_ADDR dus het IP van de cache server zit, weet je zeker dat je het goede IP te pakken hebt.

edit:
Ik was alweer te laat... |:(

"I'd rather have a bottle in front of me than a frontal lobotomy."


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Ja, maar dan kun je d'r toch niet veel mee.. Hij gaat niet voor niks via een proxy..

Waarschijnlijk is het dan een adres in de 'lan'-range (10.x.x.x of 192.168.x.x om maar 2 voorbeelden te noemen) En als dat niet zo is... Je zult toch via de proxy bij die comp weer moeten komen...

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • insan1ty
  • Registratie: Oktober 2001
  • Laatst online: 15-03-2023
(sorry voor kick)

Ik krijg deze error:

Warning: Use of undefined constant REMOTE_ADDR - assumed 'REMOTE_ADDR' in index.php on line 42

dus hij kent de constante REMOTE_ADDR niet, dus hij neemt aan dat het REMOTE_ADDR(die hij dus wel kent) is?? :?

Bij HTTP_X_FORWARDED trouwens ook.

  • insan1ty
  • Registratie: Oktober 2001
  • Laatst online: 15-03-2023
laat maar, probleem opgelost.. stond in de verkeerde php.ini te kijken.. dom dom dom

  • Rense Klinkenberg
  • Registratie: November 2000
  • Laatst online: 09-08 19:19
Je kan het beste ook $_SERVER['REMOTE_ADDR'] en $_SERVER['HTTP_X_FORWARDED_FOR'] gebruiken. Anders kan ik met ?HTTP_X_FORWARED=0.0.0.0 je script mooi onzeilen.
Pagina: 1