Raphael: Wie erhalte ich die IP - Adresse des Skriptnutzers?

Wie erhalte ich die IP - Adresse des Skriptnutzers?

  1. Wie erhalte ich die IP - Adresse des Skriptnutzers?

    ich möchte Deine Aufmerksamkeit auf folgende Umgebungsvariablen lenken, die für Dich von Interesse sein könnten:

    $sport    = $ENV{'SERVER_PORT'};
    $addr     = $ENV{'REMOTE_ADDR'};
    $port     = $ENV{'REMOTE_PORT'};

    ... und auch:
    $browser  = $ENV{'HTTP_USER_AGENT'};
    $url      = $ENV{'REQUEST_URI'};

    ggf. sind auch die folgenden Scripte für Dich interessant:

    -----------------------------------------------------------------------------------------

    sub get_host {

    -----------------------------------------------------------------------------------------

    Arg 1: IP-Adresse als String

    Return: Host-Name als String

    my $iaddr, $host;
      # String in numerisches Formmat wandeln
      $iaddr = inet_aton($_[0]);
      $host = gethostbyaddr ( $iaddr , AF_INET ) or return "";
      return $host;
    }

    -----------------------------------------------------------------------------------------

    sub get_user {

    -----------------------------------------------------------------------------------------

    Arg 1: IP-Adresse als String

    Arg 2: Port des Browsers

    Arg 3: Port des Servers

    Return: String mit User-Name bzw. Full-Name

    my ($iname, $port, $sport, $iaddr, $paddr, $proto, $question, $answer, $id);

    $iname = $_[0];
      $port = $_[1];
      $sport = $_[2];
      #-- test identd --
      $iaddr = inet_aton ( $iname );
      # Port 113: identd
      $paddr = sockaddr_in ( 113 , $iaddr );
      $proto= getprotobyname( "tcp" );
      # Format der Anfrage: "<<lokaler Port>>, <<enfernter Port>>"
      $question = "$port, $sport\n";

    socket( SOCK, PF_INET, SOCK_STREAM, $proto) or return "";
      connect( SOCK, $paddr ) or return "";
      send( SOCK, $question, 0) or return "";
      recv( SOCK, $answer, 1024, 0) or return "";
      close( SOCK );
      # Format der Antwort:
      # "<<lok.Port>> , <<entf. Port>> : USERID : UNIX :ju"
      (undef, undef, undef, $id ) = split (":", $answer);

    if ( $id ) {
        #-- now try finger --
        $remote = IO::Socket::INET->new(
           Proto => "tcp",
           PeerAddr => $iname,
           PeerPort => "finger(79)"
        ) or return $id;
        # Systempuffer abschalten
        $remote->autoflush(1);
        # nach Benutzer fragen
        print $remote "$id\n";
        # Ausgabe auswerten
        while (<$remote>) {
          # Suchen nach "Name: Hugo Meier"
    #      if (/Name: ([a-z,‚ ‚]+)/i) {
    $id = $1;
    #      }
        }
        close $remote;
      }
      return $id;
    }

    Copyright-Vermerk:
    Der Code sammt in seien Ursprüngen nicht von mir sondern von "ju" von der Zeitschrift c't (vergleiche c't 4/99, S. 230)

    ach ja: die Aufrufe:

    $host     =  get_host ($addr);
    $user     =  get_user( $addr, $port, $sport);

    Ciao
      K@rl

  2. Wie erhalte ich die IP - Adresse des Skriptnutzers?

    http://www.teamone.de/selfaktuell/schroepl03.htm#a18