[PHP5] Forum Login per curl

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

  • [PHP5] Forum Login per curl

    hi,
    ich möchte einen script schreiben, der mir in nem vBulletin Forum nen Post erstellen kann.
    Leider komm ich nach dem Login nichmehr weiter.
    Lösungsideen hätte ich erstmal 2:
    1. Direkt die newpost.php aufrufen (zB
    Code:
    http://server/forum/3.vb/newthread.php?do=newthread&f=4
    ) und das Login per cookies machen, die cookies sind dann
    Code:
    'bbpassword' => '76e93f0f0f3a8018e80d367fae3905ae',
    'bbuserid' => '2'
    das wäre dann vergleichbar damit, wenn man normal eingestellt hat dass die account daten gespeichert werden und man direkt, ohne sich einzuloggen die seite aufruft, was im browser funktioniert

    2.Erst einloggen über die login.php (zB
    Code:
    http://server/forum/3.vb/login.php?do=login
    ) und dann mit der session-id als cookie die newthread.php aufrufen und posten

    Leider funktioniert mein code nicht (das wäre jetzt erstmal die 2. methode)

    PHP-Code:
    //Vars
    $url2 'http://server/forum/3.vb/newthread.php?do=newthread&f=4';
    $url1 'http://server/forum/3.vb/login.php?do=login';
    $cookies 'cookie';

    $post = array(
        
    'vb_login_username'        => 'testuser',
        
    'vb_login_password'        => 'testuser',
        
        
    'cookieuser'               => '1',
        
        
    's'                        => '',
        
    'do'                       => 'login',
        
    'vb_login_md5password'     => '',
        
    'vb_login_md5password_utf' => ''
    );


    //Die Session initialisieren
    $ch curl_init();

    //Session Optionen setzen
    curl_setopt($chCURLOPT_URL$url1);
    curl_setopt($chCURLOPT_POST1);
    curl_setopt($chCURLOPT_POSTFIELDS$post);
    curl_setopt($chCURLOPT_HEADER0);
    #curl_setopt($ch, CURLOPT_COOKIE,'');
    curl_setopt($chCURLOPT_COOKIEJAR'cookie.txt');
    #curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');

    //curl_setopt($ch, CURLOPT_URL, $url2);
    //Ausführen der Aktionen
    curl_exec($ch);

    //Session Optionen setzen
    #curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
    #curl_setopt($ch, CURLOPT_URL, $url2);
    #curl_exec($ch);

    echo "bla<br><br><br>";
    //Session beenden
    curl_close($ch); 
    ich hab schon alles mögliche getestet, aber es will einfach nicht funktionieren! Es werden keine cookies erstellt (egal ob die cookies.txt existiert oder nicht), wenn ich einlogge und danach gleich auf ulr2 wechsle funktionierts auch nicht (es kommt wieder das login fenster) - ich denke das liegt an den fehlenden cookies.

    Hat jemand ne Idee wie ich das lösen könnte, oder wo der/die Fehler liegen.

    Ich bin für jede Hilfe dankbar ....

  • #2
    das klingt wie die neuentwicklung eines spambots. oder?
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      nö, soll kein spambot werden,
      wäre ja auch unsinnig mit userlogin

      das proggi soll mir nur n bisschen arbeit abnehemn und standart postings für mich machen

      wär n bisschen viel das nu alles zu erklären ....

      Kommentar


      • #4
        Hi leb0rtran,

        ich stehe vor dem gleichen Problem wie du. Ich hab den Login hin bekommen jedoch komme ich beim editieren eines Beitrages nicht weiter. Ich stehe vor einem generellen curl Problem denke ich.

        Um einen Beitrag editieren zu können müssen zwei Variablen übergeben werde. Erstens ein posthash und eine startime. Beide Werte sind in hiddenfeldern versteckt, so das ich sie aus der Seite parsen könnte. Ich weiss jedoch nicht so ganz wie ich das anstellen soll, da diese Werte nach jedem Seitenaufruf erneuert werden. ich kann also nicht erst die Seite aufrufen, die werte auslesen und dann die Seite erneut aufrufen + abschicken.
        Ich müsste die Seite mit curl aufrufen, die Werte auslesen und dann direkt abschicken können. Ist das Möglich?

        Hast du dein Post Skript fertig bekommen?

        Danke schonmal

        Gruß

        Kommentar


        • #5
          @sxe: Denkfehler.

          Manueller Vorgang:
          1. Du rufst das Bearbeiten-Formular auf. Die Variablen werden im HTML-Code ausgegeben.
          2. du veränderst deine Nachricht
          3. du schickst deine Nachricht mit den Variablen ab

          Script-Vorgang:
          1. Du rufst das Bearbeiten-Formular auf. Die Variablen werden im HTML-Code ausgegeben
          2. Du liest die Variablen aus, was lokal passiert, und was der Server, auf dem das Forum liegt ja nicht mitbekommt. Der denkt ja, er hat die Seite an einen normalen Benutzer geschickt.
          3. du veränderst deine Nachricht
          4. du schickst deine Nachricht mit den Variablen ab


          Wenn es nicht funktioniert, muss der Fehler irgendwo anders liegen.
          Prüf mal, ob der Cookie-Pfad richtig angegeben ist.
          Für die Cookies musst du bei cURL soweit ich weiß immer ABSOLUTE Pfade angeben und ich setze immer beide Optionen:
          COOKIEJAR und COOKIEFILE. Beide mit dem selben Pfad zu einer Datei, die Schreibrechte besitzt! (also chmod 777), da dort ja die Cookie-Informationen reingeschrieben werden müssen.


          gruß
          Piremilok

          Kommentar


          • #6
            Hi,

            ja danke, ich hatte wirklich nen Denkfehler. Hatte eine Funktion die die Seite zweimal abgerufen hat, deswegen hat das nicht funktioniert.

            danke dir

            Kommentar


            • #7
              Hallo nochmal.

              Ich hab dann doch nochmal ne Frage. Ich hab so ziemlich alles versucht aber ich komme einfach nicht weiter. Verwunderlich ist das Ganze weil ich mir sicher bin, dass es schonmal funktioniert hat.

              Ich versuche einen Forenpost in einem phpBB2 Forum zu editieren, was auch manchmal funktioniert aber eben nicht immer.

              Ich schicke ein Formular mit einer Variable namens "message" ab.

              Hat die Variable folgenden Inhalt funktioniert alles wie gedacht:
              (Ich musste einen externen Dienst nehmen, da das Forum hier den text nicht richtig darstellen konnte.)
              http://pastebin.com/m4274deb9

              Hat sie jedoch diesen Inhalt, geht es nicht mehr:
              http://pastebin.com/m258b4d29

              Das ganze passiert komischerweise nur in einem phpBB forum. In einem anderen geht es ohne Probleme.

              Ich bin etwas verwirrt.

              Gruß

              Kommentar


              • #8
                Mal drüber nachgedacht, dass das Forum vielleicht das Posten einer bloßen URL blockt? Spam!

                Kommentar


                • #9
                  Wie gesagt,
                  ich editiere einen bestehenden post. Dazu üffne ich ihn im Editierenmodus parse den bestehenden text aus dem Textarea und füge dann etwas hinzu.

                  Die links in meinem letzten Post verweisen nur auf den Inhalt der Variablen.
                  Bitte einmal klicken, dann siehst du was in den Variablen steht.

                  Gruß

                  Kommentar


                  • #10
                    Achso. Ist ja nicht so, dass unser Forum nicht die Möglichkeit hätte etwas hinein zu kopieren.

                    Der einzigen Unterschied den ich auf Anhieb sehe, ist die Länge. Oder übersehe ich etwas?

                    Kommentar


                    • #11
                      Ja, es ist soweit ich das erkennen kann nur die Länge. Generell ist es aber möglich auch so langen Text zu übertragen. Deswegen verstehe ich ja auch nicht warum das nicht geht.

                      Kommentar


                      • #12
                        Tja, wir können nur NOCH mehr raten als du.

                        Wie wäre es, wenn du einfach mal ne Testausgabe der Serverantwort machst. Vielleicht sagt dir das Forum sogar, warum es deine Änderung nicht speichern will...

                        Kommentar


                        • #13
                          Ich weiß nicht, ob das auch fürs Editieren von Posts gilt,
                          aber mir fällt dazu noch die Stichwort Flood-Control ein (oder war es Flooding? )
                          --> Zu schnelles Editieren von mehreren Posts.

                          Das Ganze wird ja sicherlich per POST geschickt (wegen maximale Länge per GET und Zeilenumbrüchen)?

                          Ansonsten schließe ich mich Tobiaz an, muss nur noch kurz meine Wahrsager-Kugel polieren...

                          Kommentar


                          • #14
                            Hehe,

                            ja ihr habt ja recht, ich dachte nur vielleicht weiss einer von euch ja zufällig an was das liegen kann, weil er selber schonmal etwas ähnliches gemacht hat. Die Antwort vom Server lasse ich mir ausgeben. Da kommt aber nichts zurück. Wenn die Übertragung funktioniert hat (Beispiel 1), dann kommt die normale Ausgabe von dem Forum, wenn es jedoch nicht klappt, dann nichts.

                            Ich danke euch trotzdem, so weiss ich wenigstens das ihr auch keine Standardantwort habt für das Problem.

                            bye

                            Kommentar


                            • #15
                              hi,

                              gib mal direkt vor dem request
                              a) die url
                              b) die ganzen parameter
                              per print_r() oder var_dump() aus und vergleich sie mal mit
                              a) einer funktionierenden Anfrage
                              b) einer nicht funktionierenden Anfrage

                              vielleicht bringt dich das ja weiter...

                              Kommentar

                              Lädt...
                              X