[HTML/PHP] ISP des Besuchers erkennen

FH16

Lieutenant
Registriert
Dez. 2003
Beiträge
688
Mit JavaScript oder PHP gibt es doch eine Möglichkeit, herauszufinden, über welchen ISP der Besucher der Seite ins Internet geht. Diverse Counter listen ja solche Ergebnisse.

Nun frage ich mich, welche JavaScript-Funktion/PHP-Variable diese Information liefert. Vielen Dank für eure Hilfe!
 
Sollte mittels
PHP:
$_Server['Remote_Addr']
und
$_Server['Remote_Host']
gehen. Eine Weiterverarbeitung dann mittels gethostbyaddr

/Edit

Ein Script könnte dann so aussehen!
PHP:
<?php 
  $R_IP = getenv("REMOTE_ADDR"); 
  echo "Deine IP lautet: $R_IP<br>"; 
  

  list($first,$second,$third,$fourth) = explode(".",$R_IP); 

// Localhost
/* 127.0.0.1 */

  // AOL dynamic IP-Range: 
  /* 
    195.115.23.64 - 195.115.23.95 
    212.38.132.104 - 212.38.132.111 
  */ 

  // T-Online dynamic IP-Range: 
  /* 
    217.224.0.0 - 217.237.161.47 
    217.80.0.0 - 217.89.31.255 
    217.0.0.0 - 217.5.127.255 
    217.224.0.0 - 217.237.161.47 
    212.185.208.0 - 212.185.255.255 
    212.184.128.0 - 212.184.165.255 
    194.25.237.0 - 194.25.237.255 
    194.25.220.0 - 194.25.221.255 
    193.159.0.0 - 193.159.158.255 
    193.158.128.0 - 193.158.191.255 
	62.224.0.0 - 62.224.127.255 
    62.225.192.0 - 62.227.255.255 
    62.153.0.0 - 62.153.43.255 
    62.155.128.0 - 62.155.255.255 
    62.158.0.0 - 62.158.255.255 
    62.156.0.0 - 62.156.63.255 
  */ 

  // Compuserve dynamic IP-Range: 
  /* 
    194.151.162.144 - 194.151.162.159 
  */ 

  // NGI dynamic IP-Range: 
  /* 
    212.185.81.128 - 212.185.81.255 
    195.71.105.160 - 195.71.105.175 
    62.53.168.0 - 62.53.168.127 
  */ 

  // Arcor dynamic IP-Range: 
  /* 
    145.253.0.0 - 145.253.31.255 
  */ 

  /* Es gibt mit Sicherheit noch mehr Bereiche, nur 
    war ich zu faul, alle zu suchen und aufzulisten 
  */ 

  switch($first) { 
    case '62': 
      switch($second) { 
        case '53': 
          $PROVIDER = 'NGI'; 
          break; 
        default: 
          $PROVIDER = 'German T-Online'; 
          break; 
      } 
    break; 
    case '145': 
      $PROVIDER = 'Arcor'; 
      break; 
    case '193': 
      $PROVIDER = 'German T-Online'; 
      break; 
	  case '127':
		  $PROVIDER = 'Localhost';
	  break;
    case '194': 
      switch($second) { 
        case '25': 
          $PROVIDER = 'German T-Online'; 
          break; 
        case '151': 
          $PROVIDER = 'Compuserve'; 
          break; 
      } 
    break; 
    case '195': 
      switch($second) { 
        case '71': 
          $PROVIDER = 'NGI'; 
          break; 
        case '115': 
          $PROVIDER = 'AOL'; 
          break; 
      } 
    break; 
    case '212': 
      switch($second) { 
        case '38': 
          $PROVIDER = 'AOL'; 
          break; 
        case '184': 
          $PROVIDER = 'German T-Online'; 
          break; 
        case '185': 
          switch($third) { 
            case '81': 
              $PROVIDER = 'NGI'; 
              break; 
            default: 
              $PROVIDER = 'German T-Online'; 
              break; 
          } 
      } 
    break; 
    case '217': 
      $PROVIDER = 'German T-Online'; 
      break; 
    default: 
      $PROVIDER = 'Sorry wurde nicht in der Datenbank gefunden'; 
      break; 
  } 

  echo 'Dein Provider lautet: '.$PROVIDER; 
?>
 
Zuletzt bearbeitet:
Vielen Dank für dein Mühe! Dein Beispiel hat mich auf den richtigen Weg geführt. Gelöst habe ich das Problem schlussendlich aber so:
PHP:
<?php
echo(gethostbyaddr($HTTP_SERVER_VARS["REMOTE_ADDR"]));
?>
 
$HTTP_*_VARS ist nicht aufwärtskompatibel und sollte in neuen Scripts durch $_* ersetzt werden.
 
Gibts da kein Script für, dass die Infos irgendwie aus der Ripe-DB zieht ?
Wird sich doch keiner die Mühe machen und die alle per Hand raussuchen :rolleyes:
 
Such dir eine Webseite, wo du den Kram abrufen kannst und schreib dir das Script selbst ;P

Hier eine kleine Hilfestellung:
PHP:
function webcontent($host,$port,$res='/',$postdata=array(),$cookie=array(),$referer='') {
  if (!is_array($cookie) { if (empty($referer) && !empty($cookie)) { $referer = $cookie; } $cookie = array(); }
  $post = ''; if (is_array($postdata)) foreach ($postdata as $key => $value)
    $post.='&'.rawurlencode($key).'='.rawurlencode($value);
    $post = substr($post,1);
  $cookietxt = ''; foreach ($cookie as $key => $value)
    $cookietxt.=$key.'='.$value.'; ';
    $cookietxt.='0';
  $request = (sizeOf($postdata)?'POST':'GET')." ".$res." HTTP/1.1\r\n".
    "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*\r\n".
    (strlen($referer)?'Referer: '.$referer."\r\n":'').
    (sizeOf($postdata)?"Content-Type: application/x-www-form-urlencoded\r\n":'').
    "Accept-Encoding: gzip, deflate\r\n".
    ((empty($cookietxt))?'':'Cookie: '.$cookietxt."\r\n").
    "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Win98; DigExt)\r\n".
    "Host: ".$host.(($port==80)?'':':'.$port)."\r\n".
    (sizeOf($postdata)?"Content-Length: ".strlen($post)."\r\n":'').
    "Connection: close\r\n".
    "Cache-control: no-cache\r\n\r\n".$post;
  if (!$fp = fsockopen($host,$port,$err,$err,1.0)) return NULL;
  fwrite($fp,$request); $buf = ''; while (!feof($fp)) $buf.=fread($fp,1024);
  fclose($fp); $buf = explode("\r\n\r\n",$buf,2);

  $buf[0] = explode("\r\n",$buf[0]); $header = array();
  $status = array_shift($buf[0]);
  for ($i=0; $i<sizeOf($buf[0]); $i++) {
    $buf[0][$i] = explode(': ',$buf[0][$i],2);
    $header[strtolower($buf[0][$i][0])] = $buf[0][$i][1];
  }

  if (isset($header['content-encoding'])) {
    switch (strtolower($header['content-encoding'])) {
      case 'deflate':
      case 'gzip':
        $buf[1] = gzinflate(substr($buf[1],10));
        break;
    }
  }

  if (isset($header['set-cookie'])) {
    if (!is_array($cookie)) $cookie = array();
    if (preg_match_all('/(\w+?)=([^\s;]*)/',$header['set-cookie'],$x))
      for ($i=0;$i<sizeOf($x[0]);$i++) $cookie[$x[1][$i]]=$x[2][$i];
  }

  return array('status'=>$status,'header'=>$header,'cookie'=>$cookie,'content'=>$buf[1]);
}
 
Zurück
Oben