Weiterleitung auf IP-Adresse ohne http://

sNiff3ls

Grünschnabel
Servus Community,

ich habe vor eine art DynDNS Dienst zu programmieren, dabei dachte ich an eine Verbindung von einem Php und Csharp. Also habe ich in Csharp ein Programm geschrieben, welches in einem eingestelltem Intervall per "POST" einen md5-Hash des Passworts an ein Php-script (refresh.php ) schickt. Stimmt der Hash mit dem des in der pass.txt festgelegten Passworts überein, so wird per
PHP:
$_SERVER['REMOTE_ADDR'];
die IP-Adresse des Klienten ausgelesen und in eine Datei (ip.txt ) geschrieben.
Bis hierhin funktioniert alles wunderbar, doch nun zu meinem eigentlichen Problem:
Beim aufrufen eines zweiten Php-script´s (pipe.php ) wird die IP-Adresse aus der ip.txt ausgelesen und der user auf diese weitergeleitet.
Dies habe ich so realisiert:
PHP:
<?php
$file = "ip.txt";
$handle = fopen($file, 'r');
$read = fread($handle, filesize($file));
fclose($handle);
Header("Location: http://".$read);
exit();
?>
So ist die Adresse der pipe.php gleichwertig mit "http://ipadresse-des-klienten".
Mein Problem hierbei ist, dass ich anstatt "http://ipadresse-des-klienten" einfach nur die ip-adresse-des-klienten brauche, ohne http:// davor.
Grund:
Nehmen wir an ich will über http://www.xxx.xx/dyndny/pipe.php (== IP-Adresse des Klieneten) auf einem TeamspeakServer Connecten. Dabei versucht Teamspeak auf http://ip-des-klienten zu connecten. So wird „http“ als IP interpretiert und „//ip-des-klienten“ als Port.

Ich hoffe ihr versteht was mein Problem ist und könnt mir helfen.
Mit freundlichen Grüßen
 
Zuletzt bearbeitet:
Achtung: Nur eine «IDEE»

Hi,
ich kann mir nicht vorstellen, dass man das so einfach mit der Header()-Funktion realisieren kann, aber du kannst es ja trotzdem ausprobieren.

Falls ich dich richtig verstanden habe, sucht TeamSpeak IP und Port nach einem solchen Schema:
PHP:
<?php
/* ... */
$eingabe = "http://127.0.0.1";
list($ip, $port) = explode(":", $eingabe);
?>
(Wobei das nur ein Beispiel sein soll. Ich weiß das TeamSpeak kein PHP versteht oO)
Um das "http" weg zu bekommen, schreibst du es einfach nicht.

Denn AFAIK ist
PHP:
Header("Location: http://72.14.221.104/");
gleichwertig mit
PHP:
Header("Location: //72.14.221.104/");

/* Edit... */
Und noch ein Tipp, den du von mir aus auch gerne ignorieren kannst: Schau dir mal die Referenz in Sachen file(); und exit(); an.
 
Zuletzt bearbeitet:
Hallo l0c4lh05t,

dir vielen Dank für den Tipp.
Machmal ist die Lösung noch so einfach und man kommt einfach nicht drauf :P
In dem refresh.php-script muss es natürlich
PHP:
$handle = fopen($file, 'r');
anstatt
PHP:
$handle = handle($file, 'r');
heißen. (Diese verdammte "Find and replace..." funktion :P )

leider funktioniert dies auch nicht wobei es mit Header(); doch theroretisch funktionieren müsste.
Hast du/ihr evtl. noch eine andere lösung anstatt Header?

Mit freundlichen Grüßen
 
Zuletzt bearbeitet:
So wie ich das verstehe haengt das komplett von Teamspeak ab. Mit deinem Header sendest Du an den Client (TS) eine andere Adresse zurueck. Ob TS etwas damit anzufangen weiss ist allerdings nicht gesagt, wahrscheinlich ignoriert TS den zurueckgeschickten Header einfach.

Habe davon abgesehen von TS keine Ahnung, aber arbeitet das ueberhaupt ueber HTTP?
 
Ich glaube irgendwie auch nich, dass TS oder ein sonstiges Programm erst einmal bei der $IP."/index.php" vorbeischaut ^^;

Meine Frage, an alle:
Sockets + CLI = Profit?
 
Das Beispiel mit dem Teamspeak server war wie gesagt nur ein Beispiel es müsste doch (nach meiner Theorie :P) ausreichen, dass beim aufrufen der pipe.php eine weiterleitung auf die IP-Adresse erfolgt. Also dass quasi "www.xxx.xx/dyndns/pipe.php" gleichwertig mit "aktuelle-ip-adresse" ist.
Wie gesagt das ist nur meine Theorie belehrt mich, wenn ich falsch liege.
 
Zurück