IP über Proxy ermitteln

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • IP über Proxy ermitteln

    Hat jemand ne Idee, wie ich die IP
    eines Clients trotz zwischengeschaltetem Proxy
    ermitteln kann (nat. mit PHP) ??

    Für Ideen, Anregungen, Denkanstöße bin ich dankbar ...



    mfg DaPhreak
    If something's HARD to do,

    then it's not worth doing.
    (Homer J. (Jay) Simpson)

  • #2
    Relativ einfach ,-)

    Hier der komplette Code (entnommen aus Power Phlogger von Philip Iezzi und meiner Wenigkeit):

    Code:
    function get_real_IP() {
    	global  $HTTP_VIA 
    	      , $HTTP_X_COMING_FROM 
    	      , $HTTP_CLIENT_IP
    	      , $HTTP_X_FORWARDED_FOR 
    	      , $HTTP_X_FORWARDED
    	      , $HTTP_COMING_FROM 
    	      , $HTTP_FORWARDED_FOR 
    	      , $HTTP_FORWARDED
    		  , $REMOTE_HOST
    	      , $REMOTE_ADDR ;
    	
    	if($HTTP_X_FORWARDED_FOR) { // case 1.A: proxy && HTTP_X_FORWARDED_FOR is defined
    		$array = extractIP($HTTP_X_FORWARDED_FOR);
    		if ($array && count($array) >= 1) {
    			return $array[0]; // first IP in the list
    		}
    	}
    	if($HTTP_X_FORWARDED) { // case 1.B: proxy && HTTP_X_FORWARDED is defined
    		$array = extractIP($HTTP_X_FORWARDED);
    		if ($array && count($array) >= 1) {
    			return $array[0]; // first IP in the list
    		}
    	}
    	if($HTTP_FORWARDED_FOR) { // case 1.C: proxy && HTTP_FORWARDED_FOR is defined
    		$array = extractIP($HTTP_FORWARDED_FOR);
    		if ($array && count($array) >= 1) {
    			return $array[0]; // first IP in the list
    		}
    	}
    	if($HTTP_FORWARDED) { // case 1.D: proxy && HTTP_FORWARDED is defined
    		$array = extractIP($HTTP_FORWARDED);
    		if ($array && count($array) >= 1) {
    			return $array[0]; // first IP in the list
    		}
    	}
    	if($HTTP_CLIENT_IP) { // case 1.E: proxy && HTTP_CLIENT_IP is defined
    		$array = extractIP($HTTP_CLIENT_IP);
    		if ($array && count($array) >= 1) {
    			return $array[0]; // first IP in the list
    		}
    	}
    	/*
    	if($HTTP_VIA) {
    	// case 2: 
    	// proxy && HTTP_(X_) FORWARDED (_FOR) not defined && HTTP_VIA defined
    	// other exotic variables may be defined 
    	return ( $HTTP_VIA . 
                '_' . $HTTP_X_COMING_FROM .
                '_' . $HTTP_COMING_FROM    
              ) ;
    	}
    	if( $HTTP_X_COMING_FROM || $HTTP_COMING_FROM ) {
    	// case 3: proxy && only exotic variables defined
    	// the exotic variables are not enough, we add the REMOTE_ADDR of the proxy
    	return ( $REMOTE_ADDR . 
                '_' . $HTTP_X_COMING_FROM .
                '_' . $HTTP_COMING_FROM    
              ) ;
    	}
    	*/
    	
    	// case 4: no proxy (or tricky case: proxy+refresh)
    	if($REMOTE_HOST) {
    		$array = extractIP($REMOTE_HOST);
    		if ($array && count($array) >= 1) {
    			return $array[0]; // first IP in the list
    		}
    	}
    	
    	return $REMOTE_ADDR;
    }
    Teile des Codes sind auskommentiert da noch auf etwas wackligen Beinen und weitgehend ungetestet mangels entsprechend konfiguriertem Proxyserver. Der Code sollte dir aber weiterhelfen.
    CAITS MovieBase für Windows - Filme verwalten mit System!

    CAITS PowerCounter - mehr Statistik gibt es nicht!

    Kommentar


    • #3
      danke dir carsten

      mfg DaPhreak
      If something's HARD to do,

      then it's not worth doing.
      (Homer J. (Jay) Simpson)

      Kommentar


      • #4
        Zur Ergänzung noch die Funktion extractIP aus Phlogger:

        PHP-Code:
            function extractIP($ip) {
            
        $b ereg ("^([0-9]{1,3}\.){3,3}[0-9]{1,3}"$ip$array);
            if (
        $b) {
                    return 
        $array;
                } else {
                    return 
        false;
                }
            } 
        Gruß tracer

        Kommentar


        • #5
          und hier das ganze nochmal E_ALL und register_globals=off sicher

          PHP-Code:
          function get_ip() {
              if (!empty(
          $_SERVER['HTTP_X_FORWARDED_FOR'])) { // case 1.A: proxy && HTTP_X_FORWARDED_FOR is defined
                  
          $array extractIP($_SERVER['HTTP_X_FORWARDED_FOR']);
                  if (
          $array && count($array) >= 1) {
                      return 
          $array[0]; // first IP in the list
                  
          }
              }
              if (!empty(
          $_SERVER['HTTP_X_FORWARDED'])) { // case 1.B: proxy && HTTP_X_FORWARDED is defined
                  
          $array extractIP($_SERVER['HTTP_X_FORWARDED']);
                  if (
          $array && count($array) >= 1) {
                      return 
          $array[0]; // first IP in the list
                  
          }
              }
              if (!empty(
          $_SERVER['HTTP_FORWARDED_FOR'])) { // case 1.C: proxy && HTTP_FORWARDED_FOR is defined
                  
          $array extractIP($_SERVER['HTTP_FORWARDED_FOR']);
                  if (
          $array && count($array) >= 1) {
                      return 
          $array[0]; // first IP in the list
                  
          }
              }
              if (!empty(
          $_SERVER['HTTP_FORWARDED'])) { // case 1.D: proxy && HTTP_FORWARDED is defined
                  
          $array extractIP($_SERVER['HTTP_FORWARDED']);
                  if (
          $array && count($array) >= 1) {
                      return 
          $array[0]; // first IP in the list
                  
          }
              }
              if (!empty(
          $_SERVER['HTTP_CLIENT_IP'])) { // case 1.E: proxy && HTTP_CLIENT_IP is defined
                  
          $array extractIP($_SERVER['HTTP_CLIENT_IP']);
                  if (
          $array && count($array) >= 1) {
                      return 
          $array[0]; // first IP in the list
                  
          }
              }
              
          /*
              if (!empty($_SERVER['HTTP_VIA'])) {
              // case 2: 
              // proxy && HTTP_(X_) FORWARDED (_FOR) not defined && HTTP_VIA defined
              // other exotic variables may be defined 
              return ( $_SERVER['HTTP_VIA'] . 
                      '_' . $_SERVER['HTTP_X_COMING_FROM'] .
                      '_' . $_SERVER['HTTP_COMING_FROM']    
                    ) ;
              }
              if (!empty($_SERVER['HTTP_X_COMING_FROM']) OR !empty($_SERVER['HTTP_COMING_FROM'])) {
              // case 3: proxy && only exotic variables defined
              // the exotic variables are not enough, we add the REMOTE_ADDR of the proxy
              return ( $_SERVER['REMOTE_ADDR'] . 
                      '_' . $_SERVER['HTTP_X_COMING_FROM'] .
                      '_' . $_SERVER['HTTP_COMING_FROM']    
                    ) ;
              }
              */
              
              // case 4: no proxy (or tricky case: proxy+refresh)
              
          if (!empty($_SERVER['REMOTE_HOST'])) {
                  
          $array extractIP($_SERVER['REMOTE_HOST']);
                  if (
          $array && count($array) >= 1) {
                      return 
          $array[0]; // first IP in the list
                  
          }
              }
              
              return 
          $_SERVER['REMOTE_ADDR'];

          Zuletzt geändert von ghostgambler; 01.08.2006, 15:48.

          Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

          bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
          Wie man Fragen richtig stellt

          Kommentar

          Lädt...
          X