HTTP-Header - Cookie übergeben

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

  • HTTP-Header - Cookie übergeben

    Hallo,

    also ich hab zwar schon gesuch und getan aber irgendwie nicht das richtige gefunden...

    Falls jemand einen Link hat wo genau mein Problem geschildert wird reicht mir das schon.

    Also ich will per script eine externe Seite aufrufen und den gesamten html content in eine variable ablegen.

    Das Problem ist das ich ein Session-ID übergeben muss die in ein Cookie gespeichert ist.

    Momentan hole ich den FTTP_Header so:
    PHP-Code:
    //Die Session initialisieren
    $ch curl_init("http://intranet.xxxxx.org/PE/mainframe.php?&counter=1&execsite=1&cid=");

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

    //Ausfren der Aktionen
    curl_exec($ch);

    //Session beenden
    curl_close($ch); 
    Ausgegeben wird dann:
    Code:
     HTTP/1.1 200 OK
    Date: Wed, 15 Feb 2006 15:14:15 GMT
    Server: Apache
    X-Powered-By: PHP/4.1.2
    Set-Cookie: PHPSESSID=59b0187159ba5a1e8ec50d8c10f85565; path=/
    Expires: Thu, 19 Nov 1981 08:52:00 GMT
    Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
    Pragma: no-cache
    Connection: close
    Transfer-Encoding: chunked
    Content-Type: text/html
    
    <html><head><meta http-equiv="refresh" content="0; URL=index.php?counter=1"></head></HTML>
    Wie kann ich jetzt das Cookie an den Link (http://intranet.xxxxx.org/PE/mainfra...xecsite=1&cid=) übergeben??

    Bitte postet mir keine Links zu curl das ist echt noch zu hart für mich... nen kleiner code ansatz wär hilfreich.

    Ich bin euch dankbar!!!

  • #2
    Hier wird zwar ein POST-Header abgesetzt, aber ich glaube das sollte genauso funktionieren.

    http://faq-php.de/q/q-code-post.html

    Kommentar


    • #3
      Hmmm eigentlich wollte ich das mit Curl machen!

      Und so richtig verstehe ich das nicht wie der mir in diesem Beispiel denn Link (http://intranet.xxxxx.org/PE/mainfra...xecsite=1&cid=) öffnet, in dem das Cookie mit der Session-ID übergeben wird?!

      Kommentar


      • #4
        Nimm einfach mal derHund's HTTP-Sniffer und schau dir an, was auf einer Seite gemacht wird, wenn ein Cookie vergeben wird.
        http://tools.nophia.de/werkzeuge-htt...alysieren.html

        Damit kannst du festellen das dir ein Cookie gesetzt wurde.

        Beispiel bei google:
        Set-Cookie: PREF=ID=6865dd463d19c63f:TM=1140020820:LM=1140020820:S=tjJwflQ6RY UlN9nJ; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.de


        Wenn ich die PHP-Browser-Klasse richtig interpretiere, brauchst du nur einen "Cookie:" zu senden (http://gentootreffen2005.deruwe.de/browser.html)

        Also:

        PHP-Code:
        fputs($fp"Cookie: name=value"); 
        Dein Hauptproblem wird sein, das DU dich mit dem Webserver unterhalten musst, und nicht ein Browser.

        EDIT:
        Evtl. geht das natürlich auch mit CURL - damit hab ich aber bisher noch nichts gemacht.

        Kommentar


        • #5
          machs dir doch einfach: deaktivier cookies, ruf die seite auf ... wenn sie nicht allzu dumm ist, wird jetzt die sid in der url übergeben (vorraussetzung). wenn dem so sein sollte, kannst du bei jedem aufruf einfach die sid an die url hängen und bist somit offiziell mit dieser unterwegs ...

          edit: editiert
          Die Zeit hat ihre Kinder längst gefressen

          Kommentar


          • #6
            Och man ich bin zu blöd dafür 4 stunden mittlerweile und ich bekomme es einfach nicht gebacken *heul*

            Also verstanden hab ich das ich:
            PHP-Code:
            fputs($fp"Cookie: name=value"); 
            Noch mit einfügen muss...
            Bei mir sollte es dann sicher aber so aussehen:
            PHP-Code:
            fputs($fp"Set-Cookie: PHPSESSID=value"); 
            Wobei ich mir unschlüssig bin ob ich anstelle von "value" was eintragen muss... -och man ich steh aufm schlauch-

            Also momentan ist es so:
            PHP-Code:
            function PostToHost($host$path$referer$data_to_send) {
              
            $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"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);
              
            fputs($fp"Set-Cookie: PHPSESSID=value");
              
            printf("Sent!\n");
              while(!
            feof($fp)) {
                  
            $res .= fgets($fp128);
              }
              
            printf("Done!\n");
              
            fclose($fp);
              
              echo 
            $res;
              return 
            $res;
            }

            $data "pid=14&poll_vote_number=2";

            printf("Go!\n");
            $x PostToHost(
                          
            "www.intranet.xxx.org",
                          
            "/PE/mainframe.php",
                          
            "http://intranet.xxx.org/PE/mainframe.php?&counter=1&execsite=1&cid=",
                          
            $data
            ); 
            Ausgegeben bekomme ich dann folgendes:
            Code:
            HTTP/1.1 200 OK
            Date: Wed, 15 Feb 2006 17:12:15 GMT
            Server: Apache
            X-Powered-By: PHP/4.1.2
            Set-Cookie: PHPSESSID=9cac0b235c5be6a9f3c70e281d2c3bff; path=/
            Expires: Thu, 19 Nov 1981 08:52:00 GMT
            Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
            Pragma: no-cache
            Connection: close
            Transfer-Encoding: chunked
            Content-Type: text/html
            
            <html><head><meta http-equiv="refresh" content="0; URL=index.php?counter=1"></head></HTML>
            Jetzt hätte ich aber gern das ich (im Browser) automatisch weitergeleitet werde zu der Seite (http://intranet.xxx.org/PE/mainframe...xecsite=1&cid=) wo ich eigentlich hin muss.

            Könntest du mir das script mal vervollständigen? Bitte!!!!!
            Zuletzt geändert von Nordin; 15.02.2006, 18:19.

            Kommentar


            • #7
              Du (dein Script, also der Client) bist gedanklich der Browser - setzt ein Browser Cookies? Nein - er bekommt sie gesetzt und er sagt das er welche hat - also "Cookie: PHPSESSID=9cac0b235c5be6a9f3c70e281d2c3bff;"

              Und als Value sollte das natürlich eine gültige SessionId für deine ZielSeite sein -
              allerdings ist das was derHund meinte durchaus richtig - evtl sogar viel einfacher.

              EDIT:
              Ausserdem willst du kein Post machen, sondern GET - dein Script spielt den Browser.

              Vervollständigen kann ich dir das leider nicht - hab das selbst noch nie gemacht, ich präsentiere dir hier nur meine gedanklichen Ansätze.

              Kommentar


              • #8
                ACH DU SCHEI.E!!!

                Wenn ich das so mache:
                PHP-Code:
                function PostToHost($host$path$referer$data_to_send) {
                  
                $fp fsockopen($host80);
                  
                printf("Open!\n");
                  
                fputs($fp"GET $path HTTP/1.1\r\n");
                  
                fputs($fp"Host: $host\r\n");
                  
                fputs($fp"Referer: $referer\r\n");
                  
                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);
                  
                fputs($fp"Set-Cookie: PHPSESSID=f6eb853fbe6a2dbbbc43bf8777cecc5d");
                  
                printf("Sent!\n");
                  while(!
                feof($fp)) {
                      
                $res .= fgets($fp128);
                  }
                  
                printf("Done!\n");
                  
                fclose($fp);
                  
                  echo 
                $res;
                  return 
                $res;
                }

                $data "pid=14&poll_vote_number=2";

                printf("Go!\n");
                $x PostToHost(
                              
                "www.intranet.xxx.org",
                              
                "/PE/mainframe.php",
                              
                "http://intranet.xxx.org/PE/mainframe.php?&counter=1&execsite=1&cid=",
                              
                $data
                ); 
                Dann ist mein var/log nach über 1 Minute bei 200MB!!! Soweit ich weis werden Scripte aber nach 30 Sekunden abgebrochen???!!

                Also ich geht zurück zu curl... (Neuanfang - Mein erster post ganz oben!)

                Kommentar

                Lädt...
                X