Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Fsockopen() Frage Auslesen von Daten

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Quedepi
    hat ein Thema erstellt [Erledigt] Fsockopen() Frage Auslesen von Daten.

    [Erledigt] Fsockopen() Frage Auslesen von Daten

    Hi,

    Ich möchte mit PHP eine Verbindung zu einer Webspell Seite aufnehmen, mich dort einloggen und meine Nachrichten abrufen.
    In etwa so wie ein lokales Mailprogramm.

    Hier ist schonmal mein Code(Ich benutze die weit verbreitete PostToHost() Funktion):

    PHP-Code:
    <?php
    function PostToHost($host$path$referer$data_to_send) {
      
    $res "";
      
    $fp fsockopen($host80);
      
    printf("Open!\n");
      
    fputs($fp"POST $path HTTP/1.1\r\n");
      
    fputs($fp"Host: $host\r\n");
      
    fputs($fp"Referer: $referer\r\n");
      
    fputs($fp"Cookie: ws_session=bdd827f0cda3cc6d792771d00add7cc5\r\n");
    // Cookie zum einloggen
      
    fputs($fp"Content-type: application/x-www-form-urlencoded\r\n");
      
    fputs($fp"Content-length: "strlen($data_to_send) ."\r\n");  
      
    fputs($fp"Connection: close\r\n\r\n");
      
    fputs($fp$data_to_send);
      
    printf("Sent!\n");
     
      while(!
    feof($fp)) {
          
    $res .= fgets($fp128);
      }
      
    printf("Done!\n");
      
    fclose($fp);
      print(
    "<br>".$res);

    }

    $data "ws_session=bdd827f0cda3cc6d792771d00add7cc5&ws_user=username&Submit=login&pwd=daspasswort";

    printf("Go!\n");
    $x PostToHost(
                  
    "www.webseite.de",
                  
    "/checklogin.php",
                  
    "http://www.referer.com/",
                  
    $data);
    ?>
    soweit so gut.

    Dieses Skript logt mich auch ein, so wie es sein soll, auf dem Bildschirm erscheint dann: "Login Succesfull".
    Aber dann werde ich umgeleitet, und zwar auf die index.php Seite. Und da die auf meinem Server nicht existiert, sondern nur auf dem Remote-Server bekomme ich eine Fehlermeldung:
    HTML-Code:
    <h1>Not Found</h1>
    <p>The requested URL /index.php was not found on this server.</p>
    <hr>
    <address>Apache/2.0.59 (Unix) PHP/5.2.5 DAV/2 Server at localhost Port 8888</address>
    Jetzt kommt meine Frage:
    Die Verbindung ist ja jetzt offen, kann ich jetzt mit einer bestimmten Technik mich zu den Nachrichten umleiten lassen? Ich habe es schon mit fopen() und fputs($fp,"Location.....") versucht, aber Ersteres öffnet die Seite dann zwar, aber ich bin nicht eingeloggt, und Letzteres macht garnichts.

    Ich hoffe ihr könnt mir helfen , denn ein anderes Forum konnte das leider nicht...
    viele Grüße^

  • David
    antwortet
    Da ist trotzdem noch was komisch dran.
    Wenn das webspell Skript 'Location: /index.php' sendet, ruft curl die /index.php auf dem webspell Server ab und nicht auf dem Server, wo Dein PHP Skript mit curl läuft (außer es ist der selbe Server). Wie gesagt: gerade getestet. Keine Ahnung, was Du falsch gemacht hast, aber Du hast sicher etwas falsch gemacht.

    Einen Kommentar schreiben:


  • Quedepi
    antwortet
    ich habe jetzt eine Lösung
    ich habe einfach eine index.php gemacht, die per Curl die Messages aufruft und das klappt ganz hervorragend


    Erledigt!

    Einen Kommentar schreiben:


  • David
    antwortet
    und dann wird man umgeleitet zum Loginoverview (was ist passiert als ich weg war)
    Und dahin wird curl auch umgeleitet. curl verhält sich da wie Dein Browser. Ich habe es gerade nochmal getestet.

    Einen Kommentar schreiben:


  • Quedepi
    antwortet
    dann passiert das selbe.

    Es kommt ein Div Container (oder sowas ähnliches) in dem steht: "Login succefull"

    und dann wird man umgeleitet zum Loginoverview (was ist passiert als ich weg war)

    und genau diese Umleitung tritt auch in Kraft wenn ich es mit Curl aufrufe.

    Beispiel:
    normalerweise mit dem Browser ist es so:
    www.seite.de/checklogin.php -> Umleitung -> www.seite.de/index.php
    bei mir:
    remoteserver -> POST => www.seite.de/checklogin.php -> Umleitung -> remoteserver/index.php

    und die index.php gibt es bei mir ja nicht^^

    Einen Kommentar schreiben:


  • David
    antwortet
    Verstehe ich nicht. Was passiert denn, wenn Du Dich mit dem Browser auf der Webspell-Seite einloggst?

    Einen Kommentar schreiben:


  • Quedepi
    antwortet
    Zitat von David Beitrag anzeigen
    Das geht ganz prima mit curl. Und um die Cookie/Session Verwaltung kümmert es sich auch gleich noch.


    cool, ich habe es jetzt ausprobiert... und es klappt ich bin eingeloggt.

    Aber jetzt kommt ein neues Problem, ich bin jetzt zwar eingeloggt, aber wenm man sich einloggt wird man auf eine Seite geschickt, die einen umleitet zur index.php

    und da sich die nicht auf meinem Server befindet kommt ein 404 Fehler.

    wie kann ich jetzt auf die Nachrichten zugreifen, ohne dass es sich wieder ausloggt?

    Einen Kommentar schreiben:


  • David
    antwortet
    Das geht ganz prima mit curl. Und um die Cookie/Session Verwaltung kümmert es sich auch gleich noch.

    Einen Kommentar schreiben:


  • Quedepi
    antwortet
    Zitat von David Beitrag anzeigen
    Mit curl geht das einfacher, PHP: Examples - Manual


    danke,
    aber ich wusste noch nicht dass man mit Curl POST Daten verschicken kann, denn das einloggen geht ja über POST, und da hab ich bisher nur fsockopen() Lösungen gesehen.

    Einen Kommentar schreiben:


  • David
    antwortet
    Mit curl geht das einfacher, PHP: Examples - Manual

    Einen Kommentar schreiben:

Lädt...
X