Ankündigung

Einklappen
Keine Ankündigung bisher.

Snoopy Formulare absenden

Einklappen

Neue Werbung 2019

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

  • Snoopy Formulare absenden

    Guten Morgen!

    Ich möchte mittels snoopy zwei Formulare nacheinander befüllen und absenden.
    Das erste Formular (LogIn in ein Wiki) wird erfolgreich gesendet und der LogIn erfolgt.
    Das zweite Formular wird angezeigt, die Felder sind jedoch leer und es wird auch nicht abgesendet.
    Hat jemand einen Tipp?
    Ist es überhaupt möglich, zwei Formulare nacheinander mittels $snoopy->submit() abzusenden?

    Hier mein Code:

    PHP-Code:
    <?php

    include_once ("Snoopy.class.php");

    class 
    SnoopyLogin {
        
        function 
    logIn($user,$password,$projectTitle,$issueTitle,$issueDescription){
        
           
    $snoopy = new Snoopy
            
           
    $submit_url_l "http://localhost/form_one/.....";
           
    $submit_url_i "http://localhost/form_two/.....";
            
           
    $submit_vars_l["wpName"] = $user;
           
    $submit_vars_l["wpPassword"] = $password;
            
           
    $submit_vars_i["projectTitle"] = $projectTitle;
           
    $submit_vars_i["issueTitle"] = $issueTitle;
           
    $submit_vars_i["issueDescription"] = $issueDescription;
           
    $submit_vars_i["createissue"] = "createissue";
      
            
           
    $snoopy->submit($submit_url_l,$submit_vars_l);
                    
           
    $snoopy->submit($submit_url_i,$submit_vars_i);
            
           print(
    $snoopy->results);
               

        }
    }
      
    ?>


  • #2
    Ich denke mal du musst wohl für jedes Form ein eigenes Objekt initialisieren. Ist jetzt nur ne Vermutung

    Kommentar


    • #3
      Ja, aber wäre damit nicht ein entscheidender Vorteil von Snoopy verloren; die automatische Cookieverwaltung??
      Ich möchte doch beim Ausfüllen des zweiten Formulars weiterhin in meinem Wiki eingeloggt sein. Wenn ich nun ein weiteres Objekt initialisiere um das zweite Formular auszufüllen, bin ich doch nicht mehr automatisch eingeloggt.

      Weiss jemand Rat?

      Kommentar


      • #4
        Was passiert mit diesem Code?
        PHP-Code:
        $submit_vars_i["createissue"] = "createissue";

        $result '';

        $submit $snoopy->submit($submit_url_l,$submit_vars_l);
        $result .= var_export($submittrue);
        $result .= ' result: ' $snoopy->results ' # ';

        $submit $snoopy->submit($submit_url_i,$submit_vars_i);
        $result .= var_export($submittrue);
        $result .= ' result: ' $snoopy->results ' # ';

        print(
        $result); 

        Kommentar


        • #5
          Beide Formulare werden ausgegeben.
          Das erste Formular (LogIn) wurde erfolgreich abgesendet.
          Das zweite Formular wird zwar angezeigt, die Felder sind jedoch weiterhin leer und es wurde nicht abgesendet.

          Kommentar


          • #6
            Was passiert, wenn Du das gleiche im Browser, per Hand machst? Woran erkennst Du, dass es nicht abgesendet wurde? Welche Werte für $submit wurden ausgegeben?

            Kommentar


            • #7
              Wenn ich das zweite Fomular im Browser per Hand ausfülle, bekomme ich eine positive Bestätigung, dass die Daten gesendet wurden bzw. der Prozess, der sich hinter dem Formular verbirgt erfolgreich ausgeführt wurde.
              Vorher muss ich mich jedoch manuell einloggen (quasi durch das erste Formular).

              Beim snoopy-submit, wird mir das zweite Formular angezeigt; die Felder sind leer. Wenn ich dieses (angezeigte) Formular ausfülle und absende, kann es nicht gesendet werden und es kommt eine Fehlermeldung die auf einen fehlenden LogIn verweist.

              Werte für submit werden nicht ausgegeben. Es werden nur die jeweiligen Formulare angezeigt.

              Kommentar


              • #8
                Zitat von helios Beitrag anzeigen
                Werte für submit werden nicht ausgegeben. Es werden nur die jeweiligen Formulare angezeigt.
                Das ist aber seltsam. Irgendwelchen Text muss
                $result .= var_export($submit, true);
                doch erzeugen. Das müsste bei beiden Aufrufen von submit() direkt vor result: stehen, vermutlich false oder true

                Kommentar


                • #9
                  Ah ja, ok stimmt!

                  Es wird jeweils

                  true result:

                  erzeugt.

                  Kommentar


                  • #10
                    Zitat von helios Beitrag anzeigen
                    Ja, aber wäre damit nicht ein entscheidender Vorteil von Snoopy verloren; die automatische Cookieverwaltung??
                    Gibt es die wirklich?
                    Ich habe nur eine Stelle gefunden, die sich mit den gesendeten Cookies des Servers beschäftigt, function setcookies(). Und die wird nur in _httprequest() aufgerufen und zwar nur, wenn ($this->passcookies && $this->_redirectaddr). Keine Ahnung, was das soll. Letztendlich musste ich nach submit() immer setcookies() aufrufen, um diesen Code zum Laufen zu bringen
                    PHP-Code:
                    <?php
                    require_once 'Snoopy.class.php';

                    $loginurl 'http://www.php.de/login.php';
                    $logindata=array(
                      
                    'do'=>'login',
                      
                    'vb_login_username'=>'David',
                      
                    'vb_login_password'=>'******************',
                      
                    's'=>'',
                      
                    'vb_login_md5password'=>'',
                      
                    'vb_login_md5password_utf'=>''
                    );

                    $searchurl='http://www.php.de/search.php';
                    $searchdata=array(
                      
                    'do'=>'process',
                      
                    'quicksearch'=>1,
                      
                    'childforums'=>1,
                      
                    'exactname'=>1,
                      
                    's'=>'',
                      
                    'query'=>'snoopy',
                      
                    'showposts'=>''
                    );

                    $snoopy = new Snoopy;
                    $snoopy->submit($loginurl$logindata);
                    $snoopy->setcookies();
                    $snoopy->submit($searchurl$searchdata);
                    $snoopy->setcookies();
                    print(
                    $snoopy->results);
                    ?>

                    Kommentar


                    • #11
                      PHP-Code:
                      $snoopy->submit($submit_url_l,$submit_vars_l);
                      $snoopy->setcookies();
                      $snoopy->submit($submit_url_i,$submit_vars_i);
                      $snoopy->setcookies(); 
                      bringt mich leider auch nicht weiter.

                      Kommentar


                      • #12
                        Funktioniert mein Beispielskript mit Deinen Anmeldedaten bei diesem Forum?
                        Du müsste eine Seite mit den Suchergebnissen zum Begriff "snoopy" bekommen.

                        Kommentar


                        • #13
                          Ja David, dein Beispielskript funktioniert bei mir.
                          Ich bekomme eine Seite mit Suchergebnissen angezeigt.

                          Kommentar


                          • #14
                            Dann fürchte ich, können wir nicht ohne die konkreten Formulare/Skripte weiterhelfen. Vielleicht ein (verstecktes) Feld der Formulare vergessen?

                            Kommentar


                            • #15
                              Habe Dir den COde des Formulars mal als Nachricht geschickt.

                              Snoopy habe ich zu Testzwecken wie folgt angepasst:
                              PHP-Code:
                              $snoopy = new Snoopy
                                      
                              $submit_url_login "http://localhost/mediawiki-1.11.0/index.php?title=Special:Userlogin&action=submitlogin&type=login&returnto=Main_Page";
                                      
                              $submit_url_issue "http://localhost/mediawiki-1.11.0/index.php?title=Special:IssueCreationForm";
                                      
                              $submit_url_form "http://localhost/snoopytest/form.html";
                                      
                                      
                              $submit_vars_login["wpName"] = $user;
                                      
                              $submit_vars_login["wpPassword"] = $password;
                                      
                                      
                              $submit_vars_issue2=array(
                                      
                              'wpSection'=>'',
                                      
                              'wpStarttime'=>'20080424101033',
                                      
                              'projectNamespace'=>'Prj',
                                      
                              'issueIdentifier'=>'Issue',
                                      
                              'wgScriptPath'=>'/mediawiki-1.11.0',
                                      
                              'wpEdittime'=>'20080424101033',
                                      
                              'wpScrolltop'=>'',
                                      
                              'wpAutoSummary'=>'d41d8cd98f00b204e9800998ecf8427e',
                                      
                              'wpEditToken'=>'19fedb1eeb5f5eb99426a0c2db8d1cbe+\\',
                                      
                              'projectTitle'=>'TestProject02',
                                      
                              'wpTextbox1'=>'dummy',
                                      
                              'storeIssue'=>'storeIssue',
                                      
                              'issueTitle'=>'Test3',
                                      
                              'issueDescription'=>'Test',
                                      
                              'createissue'=>'createissue'
                                      
                              );
                              $snoopy->submit($submit_url_login,$submit_vars_login);
                                      
                              $snoopy->setcookies();
                                      
                              $snoopy->submit($submit_url_issue,$submit_vars_issue2);
                                      
                              $snoopy->setcookies();
                                      
                                      
                                      print (
                              $snoopy->results); 

                              Kommentar

                              Lädt...
                              X