Jump to content

návod PHP: Web za proxy aneb problém s IP adresou


cniry

Recommended Posts

Dnes se dostaneme k řešení problému, který mnoho z vás (když se zadaří) nikdy řešit nebude muset.

 

Stále více lidí mi píše, že jim phpfusion, phpbb, nebo jiný przniscript píše u návštěvníků IP adresu 127.0.0.1. Tento problém nastává u podřadných scriptů, u nichž autoři nepředpovídali, že může ležet za proxy serverem.

 

Tento problém je i na CRY.cz, jak si můžete všimnout na http://phpinfo.cry.cz

Když dadáte do prohlížeče adresu http://cry.cz:80 , což je normální port webu, ale web skutečně jede na portu jiném.

Například http://mysql.cry.cz:60002/

Je to hlavně kvůli bezpečnosti.

 

 

Ale jak vyřešit onen problém s tím, že $_SERVER['REMOTE_ADDR'] neobsahuje naši IP adresu a script to neví?

Otevřete si hlavní konfigurační soubor (většinou config.php, nastaveni.php atp.) a vložte do něj následující řádek:

include "/my/ip";

 

s tím, že /my/ip je obyčejný script s tímhle kódem (na cry.cz soubor existuje v každém účtu, nejde smazat takže stačí jen onen include):

<?php
 function ip()
 {
   if($_SERVER['REMOTE_ADDR']!="127.0.0.1")
   {
     return $_SERVER['REMOTE_ADDR'];
   }
   else
   {
     return $_SERVER['HTTP_X_REAL_IP'];
   }
 }
 $_SERVER['REMOTE_ADDR'] = ip();
 $_REMOTE_ADDR = ip();
?>

Jak vidíte, script zkontroluje, jestli $_SERVER['REMOTE_ADDR'] neobsahuje IP adresu 127.0.0.1 a pokud ano, naplní ho skutečnou IP adresou návštěvníka ( $_SERVER['HTTP_X_REAL_IP'] ).

 

 

Přehled všech proměnných $_SERVER si můžete prohlédnout na http://phpmyadmin.cry.cz , nebo si vytvořit script, který vám to samé vypíše:

<?php phpinfo(); ?>

 

Není to nic těžkého a tímto malým includem naučíte script tomu, čemu ho jeho vlastní autor naučit zapoměl.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...