Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]adres IP komputera
Forum PHP.pl > Forum > Przedszkole
shreker
Witam Panowie !

Pytanko jest proste, tylko nie wiem czy istnieje możliwość wykonania go.

Chodzi mi o uzyskanie właściwego adresu IP komputera gościa który np. wchodzi na określoną stronę.
Skryptów i możliwości ich zastosowania które wyświetlają IP sieci, podsieci w której jest dany komputer jest multum, również na naszym forum. Ale mi chodzi o IP komputera, a nie IP sieci w której ten komputer jest.
Ściślej mówiąc chodzi mi o ustalenie określonego IP gościa aby je potem zablokować. Blokując IP sieci blokuję jednocześnie wszystkie komputery w tej sieci (a nie o to mi chodzi).

Oczywiście że można z takim pytaniem zwrócić się do administratora sieci. Ale mi chodzi o możliwość blokowania z poziomu strony.
webdevil
Nie da się - sieci są tak zbudowane, że ukrywają adres komputera 'wewnętrz' niej.

Jedyne co to możesz uzyskać to adres _SERVER["REMOTE_ADDR"]
shreker
Cytat(webdevil @ 6.02.2009, 11:52:48 ) *
Nie da się - sieci są tak zbudowane, że ukrywają adres komputera 'wewnętrz' niej.

Jedyne co to możesz uzyskać to adres _SERVER["REMOTE_ADDR"]


Czyli praktycznie nie ma takiej możliwości.

Intryguje mnie tylko jedna rzecz: jezeli nawet uzyskam właściwy adres IP danego komputera to czy dodajac go do zbanowanych - zablokuję go czy nie. Bo przecież skrypty uzyskują IP sieci a nie gościa?
Sky_walker
Ale gość jest w tej sieci, więc go zablokujesz.... a przy okazji i wszystkich innych w sieci

Popróbuj z tym:
  1. <?php
  2. function GetIP()
  3. {
  4.        GLOBAL $ip;
  5.   if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
  6.           $ip = getenv("HTTP_CLIENT_IP");
  7.       else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
  8.           $ip = getenv("HTTP_X_FORWARDED_FOR");
  9.       else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
  10.           $ip = getenv("REMOTE_ADDR");
  11.       else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
  12.           $ip = $_SERVER['REMOTE_ADDR'];
  13.       else
  14.           $ip = "unknown";
  15.   return($ip);
  16. }/*-------GetIP()-------*/
  17. ?>

albo tym:
  1. <?php
  2. function getip() {
  3. if (isSet($_SERVER)) {
  4. if (isSet($_SERVER["HTTP_X_FORWARDED_FOR"])) {
  5. $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
  6. } elseif (isSet($_SERVER["HTTP_CLIENT_IP"])) {
  7. $realip = $_SERVER["HTTP_CLIENT_IP"];
  8. } else {
  9. $realip = $_SERVER["REMOTE_ADDR"];
  10. }
  11.  
  12. } else {
  13. if ( getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
  14. $realip = getenv( 'HTTP_X_FORWARDED_FOR' );
  15. } elseif ( getenv( 'HTTP_CLIENT_IP' ) ) {
  16. $realip = getenv( 'HTTP_CLIENT_IP' );
  17. } else {
  18. $realip = getenv( 'REMOTE_ADDR' );
  19. }
  20. }
  21. return $realip;
  22. }
  23. ?>


^ Powinno być lepsze niż kod webdevil'a.
shreker
Cytat(Sky_walker @ 6.02.2009, 12:08:22 ) *
Ale gość jest w tej sieci, więc go zablokujesz.... a przy okazji i wszystkich innych w sieci

Popróbuj z tym:
  1. <?php
  2. function GetIP()
  3. {
  4.        GLOBAL $ip;
  5.   if (getenv(&#092;"HTTP_CLIENT_IP\") && strcasecmp(getenv(\"HTTP_CLIENT_IP\"), \"unknown\"))
  6.           $ip = getenv(&#092;"HTTP_CLIENT_IP\");
  7.       else if (getenv(&#092;"HTTP_X_FORWARDED_FOR\") && strcasecmp(getenv(\"HTTP_X_FORWARDED_FOR\"), \"unknown\"))
  8.           $ip = getenv(&#092;"HTTP_X_FORWARDED_FOR\");
  9.       else if (getenv(&#092;"REMOTE_ADDR\") && strcasecmp(getenv(\"REMOTE_ADDR\"), \"unknown\"))
  10.           $ip = getenv(&#092;"REMOTE_ADDR\");
  11.       else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], &#092;"unknown\"))
  12.           $ip = $_SERVER['REMOTE_ADDR'];
  13.       else
  14.           $ip = &#092;"unknown\";
  15.   return($ip);
  16. }/*-------GetIP()-------*/
  17. ?>

albo tym:
  1. <?php
  2. function getip() {
  3. if (isSet($_SERVER)) {
  4. if (isSet($_SERVER[&#092;"HTTP_X_FORWARDED_FOR\"])) {
  5. $realip = $_SERVER[&#092;"HTTP_X_FORWARDED_FOR\"];
  6. } elseif (isSet($_SERVER[&#092;"HTTP_CLIENT_IP\"])) {
  7. $realip = $_SERVER[&#092;"HTTP_CLIENT_IP\"];
  8. } else {
  9. $realip = $_SERVER[&#092;"REMOTE_ADDR\"];
  10. }
  11.  
  12. } else {
  13. if ( getenv( 'HTTP_X_FORWARDED_FOR' ) ) {
  14. $realip = getenv( 'HTTP_X_FORWARDED_FOR' );
  15. } elseif ( getenv( 'HTTP_CLIENT_IP' ) ) {
  16. $realip = getenv( 'HTTP_CLIENT_IP' );
  17. } else {
  18. $realip = getenv( 'REMOTE_ADDR' );
  19. }
  20. }
  21. return $realip;
  22. }
  23. ?>


^ Powinno być lepsze niż kod webdevil'a.


Wiem że zablokuję gościa, ale tak jak wspomniałem chodzi m o zablokowanie tylko tego określonego gościa (IP jego komputera), a nie wszystkich którzy są w tej podsieci.
Podane skrypty blokują sieć, a nie gościa o określonym IP z tej sieci :-)
Sky_walker
Cytat(webdevil @ 6.02.2009, 11:52:48 ) *
Nie da się - sieci są tak zbudowane, że ukrywają adres komputera 'wewnętrz' niej.

^ czytaj.

No a te skrypty które dałem mają jedną małą zalete - są proxy-odporne winksmiley.jpg
wookieb
Napisze cie jeszcze raz dużymi literami. NIE DA SIĘ!
Poczytaj o x_forwarded_for i koniec tematu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.