Seite 1 von 1

Internet IP-Adresse ermitteln

Verfasst: 01.12.2006 22:00
von Scarabol
Hallo Leute,

ich habe im Rahmen meines Chat Programms eine Procedure geschrieben mit der man seine Internet IP-Adresse ermitteln kann. Falls es sowas schon gibt ignoriert dieses Beitrag einfach, ansonsten hoffe ich auf positive Resonanz.

PB-3.94 Code:

Code: Alles auswählen

;*********************************************************************************************************************
; ©2006 by Scarabol
; nach einer Vorlage aus dem Purebasic Codearchiv www.purearea.net
; Beschreibung: Diese Procedure ermittelt die Internet IP-Adresse mithilfe der Webseite http://www.wieistmeineip.de/
;*********************************************************************************************************************

Procedure.s GetInternetIP()
  isLoop.b = 1
  Buffer.s = Space(2048)
  
  hInet.l = InternetOpen_("PB@INET", OpenType, #Null, #Null, 0)
  hURL.l = InternetOpenUrl_(hInet, "http://www.wieistmeineip.de/", #Null, 0, $80000000, 0)
  
  Repeat
    Delay(1)
    InternetReadFile_(hURL, @Buffer, Len(Buffer), @Bytes)
    If Bytes.l = 0
      isLoop=0
    Else
      Html$ = Html$ + Left(Buffer, Bytes)
    EndIf
  Until isLoop=0
  InternetCloseHandle_(hURL)
  InternetCloseHandle_(hInet)
  
  If FindString(Html$, "<h1 class="+Chr(34)+"ip"+Chr(34)+">", 0)
    ProcedureReturn Left(Mid(Html$, FindString(Html$, "<h1 class="+Chr(34)+"ip"+Chr(34)+">", 0)+Len("<h1 class="+Chr(34)+"ip"+Chr(34)+">"), 15), FindString(Mid(Html$, FindString(Html$, "<h1 class="+Chr(34)+"ip"+Chr(34)+">", 0)+Len("<h1 class="+Chr(34)+"ip"+Chr(34)+">"), 15), "<", 0)-1)
  Else
    ProcedureReturn ""
  EndIf
EndProcedure

Debug GetInternetIP()
Gruß
Scarabol

Verfasst: 02.12.2006 10:43
von HeX0R
Das gibts sogar Api-Free.

Verfasst: 03.12.2006 20:15
von Falko
Wer ein Server mit PHP-Unterstützung sein Eigen nennt, der kann sich mit diesem PHP-Scipt unabhängig die IP ausgeben lassen :lol:

MyIP.php

Code: Alles auswählen

<html>
<head>
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>IP4You</title>
</head>

<body text="#0000F0" bgcolor="#C0C0C0"<p><u><font size="4" color="#000000">Ihre IP ist:</font></u><b>
<?php
echo $_SERVER['REMOTE_ADDR'];
?> 
</b></p>
</body>

</html>

Verfasst: 03.12.2006 20:25
von Deeem2031
Das tuts auch:

Code: Alles auswählen

<?php
echo $_SERVER['REMOTE_ADDR'];
?>

Verfasst: 03.12.2006 21:38
von Tafkadasom2k5
Muss man nicht trotzdem noch en Content vorher angeben?Oder macht PHP das automatisch?

Code: Alles auswählen

<?php
echo "Content-Type: text/plain\n\n";
echo $_SERVER['REMOTE_ADDR'];
?>
Zumindest so muss es bei Pythonscripten gemacht werden...

Gr33tz
Tafkadasom2k5

Verfasst: 03.12.2006 21:52
von NNSoft
Tafkadasom2k5 hat geschrieben:Muss man nicht trotzdem noch en Content vorher angeben?Oder macht PHP das automatisch?

Code: Alles auswählen

<?php
echo "Content-Type: text/plain\n\n";
echo $_SERVER['REMOTE_ADDR'];
?>
Zumindest so muss es bei Pythonscripten gemacht werden...

Gr33tz
Tafkadasom2k5
Hallo,

nein, ist ja keine Text-Datei sondern ne php-Datei. So als echo wird das wie Text ausgegeben. Ergebnis deines "Scriptes" wäre so:

Content-Type: text/plain
(Leerzeile)
(Leerzeile)
255.255.255.255

:|

Verfasst: 03.12.2006 21:58
von onny
ich find den code echt hübsch!
du solltest vllt eine andere seite nehmen, bei der nur die ip angezeigt wird. das macht vllt. einiges einfacher!

Verfasst: 03.12.2006 23:18
von bluejoke
Hallo,

nein, ist ja keine Text-Datei sondern ne php-Datei. So als echo wird das wie Text ausgegeben. Ergebnis deines "Scriptes" wäre so:

Content-Type: text/plain
(Leerzeile)
(Leerzeile)
255.255.255.255
AYAYAY.

Also: Übertragen wird nicht eine PHP-Datei, sondern plain-text. (übrigens ist ne "php-datei" auch nix anderes). Der Interpreter macht das allerdings automatisch. Wenn man es manuell machen will, so muss man das über header(""); erledigen. Ist aber hier wirklich nicht nötig (aber wenn man bspw. jpg-daten ausgeben will eben schon)

Also: Wenn man keine Ahnung hat, ...

Stimmt: Bei vielen anderen Sprachen muss das extra gemacht werden, weil PHP aber für diesen Einsatzort geschustert ist, macht es das liebenswürdigerweise automatisch und kann notfalls geändert werden...

Verfasst: 04.12.2006 00:53
von NNSoft
bluejoke hat geschrieben:Also: Wenn man keine Ahnung hat, ...
EyEyEy, echt cool deine Sonnenbrille, scheint nur die Durchsicht zu verschleiern. :lol:

Das zum Thema "keine Ahnung". Es zeigt das Ergebnis des obigen Scriptes. Und wenn wir schon "schlaumeiern", er (der Browser) wandelt es zum Type text/html um nicht text/plain. (Mal in die Eigenschaften der Ergbnisseite schauen!)

Verfasst: 04.12.2006 11:50
von bluejoke
Ich schrieb doch, dass der Content-Type über header übergeben werden muss, weil er sonst in der Ausgabe landet.

du hast recht, gesendet wird vom Webserver scheinbar bei Standardkonfi immer text/html, aber was spielt das für eine Rolle? Wenn du selber genau weist, dass da die IP-Adresse so drin steht, kann die die MIME-Angabe ja am Arsch vorbeigehen.

ayayay ist übrigens Kichwa und bedeutet soviel wie autsch.