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

  • [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^

  • #2
    Mit curl geht das einfacher, PHP: Examples - Manual

    Kommentar


    • #3
      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.

      Kommentar


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

        Kommentar


        • #5
          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?

          Kommentar


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

            Kommentar


            • #7
              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^^

              Kommentar


              • #8
                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.

                Kommentar


                • #9
                  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!

                  Kommentar


                  • #10
                    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.

                    Kommentar

                    Lädt...
                    X