cURL - einfaches Formular ausfüllen funktioniert nicht

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

  • cURL - einfaches Formular ausfüllen funktioniert nicht

    Ich möchte mein eigenes Formular nur zum Probieren ausfüllen lassen, doch funktioniert es nicht. (XAMPP, cURL aktiviert)
    Die Datei besucher.txt bleibt leer, bei manuellem Ausfüllen klappt es ohne Probleme.

    test.php mit Formular
    PHP-Code:
    <?php
     
    if ( empty ($_POST['vorname']) || empty ($_POST['nachname']) )
    {
        if ( 
    $_POST['kontrolle'] == )
        {
            echo 
    "<p>Leere Felder zählen nicht</p>";
            
            if ( empty (
    $_POST['vorname']) )
        {
            echo 
    "<p>Vornamen eintragen</p>";
        }
        if ( empty (
    $_POST['nachname']) )
        {
            echo 
    "<p>Nachnamen eintragen</p>";
        }
        }
        
    $PHP_SELF $_SERVER['PHP_SELF'];
        echo 
    '<form action="' $PHP_SELF '" method="post" enctype="multipart/form-data">
        <input type="text" name="vorname" id="vorname" value="' 
    $_POST['vorname'] . '" /></label><br />
        <input type="text" name="nachname" id="nachname" value="' 
    $_POST['nachname'] . '"/></label>
        <input type="hidden" name="kontrolle" value="1" />
        <input type="submit" value="Absenden" />

    </form>' 
    ;
    }
    else
    {
        
    $handle fopen ("besucher.txt""a");
        
    $daten $_POST['vorname'] . " | " $_POST['nachname'] . "\n"
        
    fwrite ($handle$daten );
        
    fclose ($handle);
            
        echo 
    "Daten erfolgreich eingetragen";
        
    }
    ?>

    Datei mit cURL Funktion
    PHP-Code:
    <?php
    function formular_automatisch $url$var  )
    {
        
    $handle curl_init($url);
        
        
    curl_setopt($handleCURLOPT_TIMEOUT10);
        
    curl_setopt($handleCURLOPT_FAILONERROR1);
        
    curl_setopt($handleCURLOPT_RETURNTRANSFER1);
        
    curl_setopt($handleCURLOPT_POST1);
        
    curl_setopt($handleCURLOPT_POSTFIELDS$var );
        
        
    curl_exec($handle);
        
        if ( 
    curl_errno($handle) == )
        
    $send true;
        else
        
    $send false;
        
    curl_close($handle);
        
        return 
    $send;
    }

    if ( 
    formular_automatisch("test.php"'vorname=tester&nachname=test&kontrolle=1') ) 
    echo 
    "Erfolgreich";
    else
    "Fehler";
       
    ?>

  • #2
    Wenn ich http://localhost/test.php als URL angebe, dann funktioniert es, kommt cURL vielleicht nicht mit relativen Pfadangaben zurecht?

    Kommentar


    • #3
      Zitat von einermeiner Beitrag anzeigen
      Wenn ich http://localhost/test.php als URL angebe, dann funktioniert es, kommt cURL vielleicht nicht mit relativen Pfadangaben zurecht?
      Wie soll cURL von einem relativen Pfad auf die richtige URL schließen? Soll es raten?

      Ich sag dir: Geh auf foobar.php. Woher weißt du jetzt, welche Seite ich meine? Welche Domain? Welches Protokoll?

      Kommentar


      • #4
        Ich hatte beide Dateien lokal in demselben Ordner liegen, dachte, dass es deshalb funktioniere, aber jetzt weiß ich es ja.

        Kommentar


        • #5
          Welchen Sinn hat es ein Formular mit cURL abzusenden, wenn die andere PHP-Datei am selben Server liegt? Warum sprichst du die PHP-Datei nicht direkt an?

          Kommentar


          • #6
            1. PHP_SELF ist böse (XSS)
            2. multipart/form-data ohne input type="file" ist recht Sinn frei.
            Wir werden alle sterben

            Kommentar


            • #7
              1. Gut zu wissen, jetzt weiß ich wieder, warum ich in einem anderen Beitrag nach einem PHP Sicherheitsbuch suche...
              Wird aber auch in vielen Tutorials falsch gemacht, siehe php-kurs.com.
              Und $_SERVER['SCRIPT_NAME'] ist "sicher"?

              2. Soll ich "enctype" weglassen oder gibt es ein spezielles dafür?

              Kommentar


              • #8
                1. action leer lassen oder auf "?" setzen.
                2. enctype weglassen oder auf den Standardwert application/x-www-form-urlencoded setzen.
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  Beides weglassen funktioniert auch, dann nehme ich doch diese Variante.

                  Kommentar


                  • #10
                    Das Attribut action darfst du leer lassen, aber nicht weglassen, denn es ist ein Pflichtattribut.

                    Bei enctype ist das anders, denn es ist ein Attribut mit einem Standardwert, der automatisch gesetzt wird (bzw. als gesetzt betrachtet wird), wenn dieses Attribut nicht angegeben ist.
                    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                    Super, danke!
                    [/COLOR]

                    Kommentar


                    • #11
                      Danke!

                      Kommentar

                      Lädt...
                      X