fsockopen mit ssl und htaccess
trunx
- php
Hallo Forum,
wie im Titel angegeben, versuche ich gerade eine Verbindung zu einem Server aufzubauen, was mir aber hartnäckig misslingt, hier mal der Code
$host = "ssl://example.org";
$uri = "/geheim.html";
$usr = "icke";
$pwd = "xyz";
header("Content-type: text/html");
$sock = fsockopen($host, 443, $errno, $errstr, 5);
fputs($sock, "GET ".$uri." HTTP/1.1\r\n");
fputs($sock, "Host: ".$host."\r\n");
fputs($sock, "Authorization: Basic ".base64_encode($usr.":".$pwd)."\r\n");
fputs($sock, "Connection: close\r\n\r\n");
while(!feof($sock))
echo fgets($sock, 4096);
fclose($sock);
Fehlermeldung ist ein "Bad Request". Ich selbst vermute, dass der Port falsch ist, wie bekommt man den denn raus? Wenn ich mich hier per Hand auf dem Server anmelde, muss ich ja auch den Port nicht wissen...
Ich versteh's nicht und es wäre schön, wenn mir jemand helfen könnte.
Danke :)
bye trunx
Tach!
$host = "ssl://example.org";
$sock = fsockopen($host, 443, $errno, $errstr, 5);
Das ssl:// mag zwar für fsockopen() ein Kennzeichen sein, dass es eine SSL-Verbindung aufbauen soll, aber
fputs($sock, "Host: ".$host."\r\n");
für den Host-Header ist der Hostname und nicht solch eine Pseudo-URI anzugeben.
Fehlermeldung ist ein "Bad Request". Ich selbst vermute, dass der Port falsch ist, wie bekommt man den denn raus? Wenn ich mich hier per Hand auf dem Server anmelde, muss ich ja auch den Port nicht wissen...
Nein, der Port ist es nicht. Unter "per Hand am Server anmelden", meinst du vermutlich, dass du einen Browser als Werkzeug verwendest, also alles andere als "per Hand" arbeitest. Im Browser gibst du den Protokollnamen https als Anfang der URL an. Zu diesem wird der zugehörige Standard-Port ermittelt und vom Browser zum Verbindungsaufbau verwendet. Wenn du nun den Verbindungsaufbau selbst machst, musst du entweder einen Wrapper nehmen, der für dich eine vollständige URL interpretiert und alles weitere einleitet, oder du musst wirklich alles per Hand machen. Dazu zählt dann auch eine grundlegende Kenntnis der verwendeten Protokolle.
dedlfix.
Das ssl:// mag zwar für fsockopen() ein Kennzeichen sein, dass es eine SSL-Verbindung aufbauen soll, aber
fputs($sock, "Host: ".$host."\r\n");
für den Host-Header ist der Hostname und nicht solch eine Pseudo-URI anzugeben.
Nein, der Port ist es nicht.
hey danke, du hast natürlich Recht! Jetzt geht's...
(immer diese kleinen Fehler, grummel...)
Hello,
fputs($sock, "Host: ".$host."\r\n");
für den Host-Header ist der Hostname und nicht solch eine Pseudo-URI anzugeben.
Nein, der Port ist es nicht.hey danke, du hast natürlich Recht! Jetzt geht's...
Heißt das jetzt, dass PHP sich um den ganzen Verbindungsdialog einer SSL-Verbindung automatisch kümmert, ohne Schlüssel anzufordern oder ähnliches?
Ich habe das bisher auch noch nicht ausprobiert und es wäre doch ein netter Lernerfolg so ganz nebenbei...
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Tach!
Heißt das jetzt, dass PHP sich um den ganzen Verbindungsdialog einer SSL-Verbindung automatisch kümmert, ohne Schlüssel anzufordern oder ähnliches?
Laut Beschreibung im Handbuch zu fsockopen() scheint sich PHP um alles zu kümmern.
dedlfix.