Ankündigung

Einklappen
Keine Ankündigung bisher.

Curl mehrere URLs öffnen in einer Curl Session.

Einklappen

Neue Werbung 2019

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

  • Curl mehrere URLs öffnen in einer Curl Session.

    Hallo Leute,

    mittlerweile weiß ich einigermaßen wie ich Curl benutze nun steh ich vor meinem nächsten Problem. Vielleicht kann mir ja jemand von euch helfen.

    test.php
    PHP-Code:
    <?php

    //Die Session initialisieren
    $ch curl_init();

    //Variablen setzen
    $hidden "index.html";
    $login "Benutzername";
    $password "Passwort";
    $url ="https://www.domain.de/index.html";
    $arrSubmit='target_page=' $hidden '&loginname=' $login '&password=' $password;
    $cookies="/";
    $fp fopen("test.html""w");
    //Session Optionen setzen
    curl_setopt($chCURLOPT_URL,$url);
    curl_setopt($chCURLOPT_POST1);
    curl_setopt($chCURLOPT_POSTFIELDS$arrSubmit);
    curl_setopt($chCURLOPT_HEADER0);
    curl_setopt($chCURLOPT_COOKIEJAR$cookies);
    curl_setopt($chCURLOPT_COOKIEFILE$cookies);
    curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
    curl_setopt($chCURLOPT_FILE$fp);
    //Ausführen der Aktionen
    curl_exec($ch);
    fclose($fp);
    ###########################################################################
    #Session ID herausfinden...
    $handle fopen("test.html","r");
    $content fread($handle,filesize("test.html"));
    fclose($handle);
    $starttag '<li class="tab1"><a href="info.html?session=';
    $endtag '">Information</a></li><li class="tab2">';
    $text $content;
    if (
    false !== ($startpos=strpos($text$starttag)) )
      {
      if (
    false !== ($endpos=strpos($text$endtag$startpos)) )
        {
        
    $sp $startpos+strlen($starttag);
        
    $versatel_session substr($text$sp$endpos-$sp);
        }
      }
    ###########################################################################
    $url "https://www.service.domain.de/logout.html?session=$test_session";
    #URL im eigenen Browser aufrufen funktioniert!!!
    echo"<html><a href=".$url.">".$url."</a></html>";

    //Session beenden
    curl_close($ch);
    ?>
    Ich möchte jetzt, dass Curl die neu erstellte $url aufruft damit die auf der Internetseite erstellte Session geschlossen wird (Logout-Link). Wenn ich manuell den Link aufrufe dann klappt alles wunderbar aber wenn ich das mit Curl versuche gehts irgendwie nicht.

    Sollte nicht folgender Code reichen? Ich setze ihn vor //session beenden curl_close($ch)
    Problem ist ums nochmal auf den Punkt zu bringen. Ich werde auf der mittels curl geöffneten Internetseite nicht ausgeloggt.

    PHP-Code:
    ###########################################################################
    $url "https://www.service.domain.de/logout.html?session=$test_session";
    #URL im eigenen Browser aufrufen funktioniert!!!
    #echo"<html><a href=".$url.">".$url."</a></html>";

    $fp fopen("test.html""w");
    //Session Optionen setzen
    curl_setopt($chCURLOPT_URL,$url);
    curl_setopt($chCURLOPT_HEADER0);
    curl_setopt($chCURLOPT_COOKIEJAR$cookies);
    curl_setopt($chCURLOPT_COOKIEFILE$cookies);
    curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
    curl_setopt($chCURLOPT_FILE$fp);
    //Ausführen der Aktionen
    curl_exec($ch);
    fclose($fp

    //Session beenden
    curl_close($ch); 
    Hat jemand eine Idee?
    fragen ist kostenlos!

  • #2
    Benutze die Forensuche, die Frage hatten wir auf jeden Fall schonmal. Danach kannst du dich nochmal melden.

    Kommentar


    • #3
      Habe wieder den Beitrag von gestern Nacht gefunden. Der mir schon einmal weitergeholfen hat.
      http://www.php.de/php-einsteiger/511...il-parsen.html

      Habe mich sogar daran gehalten aber ich komm nicht darauf warum ich nicht per Curl ausgeloggt werde. Manuell funktioniert es ohne Probleme wenn ich die neu erstellte URL aufrufe in meinem eigenen Browser.
      fragen ist kostenlos!

      Kommentar


      • #4
        Eine Frage vorweg, hast du mal error_reporting aktiviert und die fehler ausgabe aktiviert ?

        was mir an deinem Code auffällt:
        PHP-Code:
        $cookies="/";
        /* .... */
        curl_setopt($chCURLOPT_COOKIEJAR$cookies);
        curl_setopt($chCURLOPT_COOKIEFILE$cookies); 
        Kann es sein dass hier ein Problem ensteht, weil meines erachten nach ist / keine Datei. Also kann er garkeine Cookies speichern dementsprechend wird er beim Logout da keine Cookies haben die er mitsendet [z.b. ein Session-cookie vielleicht oder was auch immer das Script an Cookies nutzt] und damit wird der User dann auch nicht ausgeloggt.
        [URL="http://www.robo47.net"]robo47.net[/URL] - Blog, Codeschnipsel und mehr
        | :arrow: [URL="http://www.robo47.net/blog/192-Caching-Libraries-and-Opcode-Caches-in-php-An-Overview"]Caching-Klassen und Opcode Caches in php[/URL] | :arrow: [URL="http://www.robo47.net/components"]Robo47 Components - PHP Library extending Zend Framework[/URL]

        Kommentar


        • #5
          Hab jetzt mal die Cookie.txt hinzugefügt. Funktioniert hats noch immer nicht.
          PHP-Code:
          $cookies="cookie.txt"
          PHP-Code:
          $mydebug fopen('debug.txt','w');
          curl_setopt($chCURLOPT_STDERR$mydebug);
          curl_setopt($chCURLOPT_VERBOSE1); 
          Gibt mir folgendes aus.
          fragen ist kostenlos!

          Kommentar


          • #6
            Und du bist dir Sicher dass Versatel das was du da machst erlaubt ?
            [URL="http://www.robo47.net"]robo47.net[/URL] - Blog, Codeschnipsel und mehr
            | :arrow: [URL="http://www.robo47.net/blog/192-Caching-Libraries-and-Opcode-Caches-in-php-An-Overview"]Caching-Klassen und Opcode Caches in php[/URL] | :arrow: [URL="http://www.robo47.net/components"]Robo47 Components - PHP Library extending Zend Framework[/URL]

            Kommentar


            • #7
              Das ist eine andere Frage! Ich probiere dat ja mit meinen eigenen Zugangsdaten aus. - fertig.

              Hast Du eine Idee? Also als letztes wird die richtige Seite abgespeichert aber der logout will nicht so richtig laufen. Wenn ich mich manuell wieder einlogge weißt er mcih darauf hin, dass ich nciht auf Logout geklickt habe.
              fragen ist kostenlos!

              Kommentar


              • #8
                Naja, wenn ein Anbieter soetwas will, dann bietet er seinen Kunden normalerweise in irgendeiner Form eine API dafür an.
                Wenn es die nicht gibt, gehe ich üblicherweise davon aus, dass der Anbieter soetwas nicht will und automatisiertes Abfragen von irgendwelchen Inhalten, auch wenn man dort Kunde/Mitglied oder sonstwas ist, fällt damit in eine Grau bis Schwarzzone.
                [URL="http://www.robo47.net"]robo47.net[/URL] - Blog, Codeschnipsel und mehr
                | :arrow: [URL="http://www.robo47.net/blog/192-Caching-Libraries-and-Opcode-Caches-in-php-An-Overview"]Caching-Klassen und Opcode Caches in php[/URL] | :arrow: [URL="http://www.robo47.net/components"]Robo47 Components - PHP Library extending Zend Framework[/URL]

                Kommentar


                • #9
                  Das sind bloß Tests. Ich will wissen wie Curl arbeitet und wie man es anwendet.

                  Ich sende den Logout jetzt wie folgt:

                  PHP-Code:
                  ###########################################################################
                  $url "https://www.service.domain.de/logout.html?session=$test_session";
                  #URL im eigenen Browser aufrufen funktioniert!!!
                  #echo"<html><a href=".$url.">".$url."</a></html>"; 

                  //Die Session initialisieren
                  $ch curl_init($url);
                  $fp fopen("test_re.html""w");

                  //Session Optionen setzen
                  curl_setopt($chCURLOPT_FILE$fp);
                  curl_setopt($chCURLOPT_HEADER0);

                  //Ausführen der Aktionen
                  curl_exec($ch);
                  fclose($fp); 
                  Vielen Dank für die Hilfe!!!
                  fragen ist kostenlos!

                  Kommentar

                  Lädt...
                  X