fsockopen mit ssl

Meccan

Erfahrenes Mitglied
Hallo Leute,

ich versuche schon seit geraumer Zeit eine Seite
die mit SSL verschlüselt ist per fsockopen auszulesen.
Hab das aber bist heute nicht geschaft.

PHP:
$fp = fsockopen ("ssl://banking.postbank.de/app/welcome.do", 443, $errno, $errstr, 30);
if (!$fp) 
{
    echo "$errstr ($errno)<br />\n";
}
else
{
   echo "es geht;"
}

Es wir mir meistens die selber Fehlermeldung ausgegeben, dass mein PHP mit den SSL Optionen nicht kompliliert wurde, also mit Curl und OpenSSL beides wurde aber bei mir mit kompliliert, was auch in der phpinfo so steht.
Da ich dann dachte ich mache selber eine Fehler beim kompilieren, habe ich Lampp (Xampp für Win) ausprobiert, da gibt es aber den gleichen fehler.

Ich hoffe ihr könnt mir helfen.
Danke im Voraus für eure Antwort.

MFG Meccan
 
Öhm seit wann gibt es denn ein SSL Protokoll ?
Wenn du eine SSL geschützte Webseite aufrufen willst ist das Protokoll immernoch https ;)
 
Hi,

laut http://de3.php.net/manual/de/function.fsockopen.php benutzt
man bei einer https verbindung den Präfix ssl:// warum auch immmer.

Und wenn ich den Code mit den https Präfix ausprobiere
wir mir diese Fehlermeldung ausgegeben:

Unable to find the socket transport "https" - did you forget to enable it when you configured PHP? (0)

Aber ich hab PHP mit OpenSSL und Curl kompiliert.
Und selbst mit Lampp oder Xampp funktioniert es nicht.

Grüße Meccan
 
Warum man ssl:// als Präfix nutzen soll, erklärt sich daher, welche Transportlayer PHP kennt. Diese werden hier aufgelistet: TransportLayer

Zu deinem Problem:
Du baust einen Socket auf mit folgender Zeile:
PHP:
$fp = fsockopen ("ssl://banking.postbank.de/app/welcome.do", 443, $errno, $errstr, 30);

Aus dem Manual von PHP sind die Parameter der Funktion wie folgt definiert:
Code:
resource fsockopen ( string $hostname [, int $port [, int &$errno [, string &$errstr [, float $timeout]]]] )


Wie man sieht, ist der erste Paramter der Hostname. Hostname ist nicht die Webseite, sondern der Host/Server, dies wäre in deinem Beispiel
PHP:
$fp = fsockopen ("ssl://banking.postbank.de", 443, $errno, $errstr, 30);

Um dann die von dir gewünschte Adresse auf diesem Host aufzurufen, musst man per "GET /app/welcome.do" der socket stream schreiben.

Müsste so klappen
 
Hallo,

schonmal vielen dank für deine Antwort.

Ich habe meinen Code jetzt so umgeschrieben:

PHP:
<?
 $fp = fsockopen ("ssl://banking.postbank.de", 443, $errno, $errstr, 30);   
 if (!$fp) 
 {
    echo "$errstr ($errno)<br />\n";
 } 
else 
{
        $path = 'app/welcome.do';
         $host = 'banking.postbank.de';
         $referer = 'http://www.postbank.de/';
    fputs($fp, "GET /$path HTTP/1.1\r\n"); 
    fputs($fp, "Host: $host\r\n");
        fputs($fp, "Referer: $referer\r\n");
        fputs($fp, "Connection: close\r\n\r\n");
    
    while (!feof($fp)) 
    {
        echo fgets($fp,128);
    }
    fclose($fp);
}
?>

Leider bekomm ich noch leider die selber Fehlermeldung wie immer:
Warning: fsockopen() [function.fsockopen]: unable to connect to banking.postbank.de:443 in blablabla on line 2
Connection refused (61)

Danke schonmal für die Antwort.

MFG Meccan
 
Hallo,

also die Lösung oben funktioniert wunderbar.
Es ging nur eben nicht, weil so wie es aussieht der
Port bei mir an der FH gesperrt ist was mich eigentlihc wundert,
da ich auf jeder SSL verschlüsselte Seite zu greifen kann.

Vielen dank nochmal an dich Mairhofer.

Grüße Meccan
 
Habe das Selbe Problem.
Hab eine recht neue Version von xampplite laufen, angeblich is SSL da aktiviert laut Anzeige.

Hat jemand eine Lösung?
Ist da bei mir dann auch der Port gesperrt oder wie?
 
kann gut sein, bei mir war es so.
Hast du vielleicht ne Möglichkeit
das Script woanders auszuprobieren.
Aber wenn du es von zuhause aus probierst
müsste es normal funktionieren.
Versuch vielleicht noch ein anderes Xampp.

Grüße
 
mit der Postbankseite will ich nichts.
Ich brauchte nur eine SSL verschlüsselte
Seite und da ist mir spontan meine Bank eingefallen :)

grüße
 
Zurück