IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

[libcurl] Validation d'un formulaire


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut [libcurl] Validation d'un formulaire
    Bonjour,

    J'essaie d'utiliser la librairie libcurl pour manipuler des pages html. J'essaie de valider un formulaire en me basant sur un exemple fourni par l'API qui montre comment transférer un fichier par un formulaire.
    Voici mes fichiers:

    main.c:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    /*****************************************************************************
     *                                  _   _ ____  _
     *  Project                     ___| | | |  _ \| |
     *                             / __| | | | |_) | |
     *                            | (__| |_| |  _ <| |___
     *                             \___|\___/|_| \_\_____|
     *
     * $Id: postit2.c,v 1.4 2004/08/23 14:22:52 bagder Exp $
     *
     * Example code that uploads a file name 'foo' to a remote script that accepts
     * "HTML form based" (as described in RFC1738) uploads using HTTP POST.
     *
     * The imaginary form we'll fill in looks like:
     *
     * <form method="post" enctype="multipart/form-data" action="examplepost.cgi">
     * Enter file: <input type="file" name="sendfile" size="40">
     * Enter file name: <input type="text" name="filename" size="30">
     * <input type="submit" value="send" name="submit">
     * </form>
     *
     * This exact source code has not been verified to work.
     */
     
    #include <stdio.h>
    #include <string.h>
     
    #include <curl/curl.h>
    #include <curl/types.h>
    #include <curl/easy.h>
     
    int main(int argc, char *argv[])
    {
      CURL *curl;
      CURLcode res;
     
      struct curl_httppost *formpost=NULL;
      struct curl_httppost *lastptr=NULL;
      struct curl_slist *headerlist=NULL;
      char buf[] = "Expect:";
     
      curl_global_init(CURL_GLOBAL_ALL);
     
      /* Fill in the file upload field */
      curl_formadd(&formpost,
                   &lastptr,
                   CURLFORM_COPYNAME, "sendfile",
                   CURLFORM_FILE, "C:\\favicon.ico",
                   CURLFORM_END);
     
      /* Fill in the filename field */
      curl_formadd(&formpost,
                   &lastptr,
                   CURLFORM_COPYNAME, "filename",
                   CURLFORM_COPYCONTENTS, "favicon.ico",
                   CURLFORM_END);
     
     
      /* Fill in the submit field too, even if this is rarely needed */
      curl_formadd(&formpost,
                   &lastptr,
                   CURLFORM_COPYNAME, "submit",
                   CURLFORM_COPYCONTENTS, "send",
                   CURLFORM_END);
     
      curl = curl_easy_init();
      /* initalize custom header list (stating that Expect: 100-continue is not
         wanted */
      headerlist = curl_slist_append(headerlist, buf);
      if(curl) {
        /* what URL that receives this POST */
        curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/test.php");
        if ( (argc == 2) && (!strcmp(argv[1], "noexpectheader")) )
          /* only disable 100-continue header if explicitly requested */
          curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headerlist);
        curl_easy_setopt(curl, CURLOPT_HTTPPOST, formpost);
        res = curl_easy_perform(curl);
     
        /* always cleanup */
        curl_easy_cleanup(curl);
     
        /* then cleanup the formpost chain */
        curl_formfree(formpost);
        /* free slist */
        curl_slist_free_all (headerlist);
      }
      return 0;
    }
    test.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form method="post" enctype="multipart/form-data" action="test2.php">
    	Enter file: <input type="file" name="sendfile" size="40">
    	Enter file name: <input type="text" name="filename" size="30">
    	<input type="submit" value="send" name="submit">
    </form>
    test2.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?php
    	echo "Copying '" . $_FILES['sendfile']['tmp_name'] . "' to '" . $_POST['filename'] . "'";
    	move_uploaded_file($_FILES['sendfile']['tmp_name'], $_POST['filename']);
    ?>
    Quand je passe directement par le formulaire, alors mon fichier est bien transféré, par contre, quand je passe par mon programme, alors rien ne se passe.

    J'aimerais comprendre pourquoi et comment y remédier. Quelle est la commande qui permet de faire le submit?

    Merci d'avance

  2. #2
    Membre éclairé Avatar de Trunks
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2004
    Messages
    534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 534
    Par défaut
    En fait, il faut pointer vers le répertoire cible, et non pas vers le répertoire qui contient le formulaire ...

    Remplacer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/test.php");
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    curl_easy_setopt(curl, CURLOPT_URL, "http://localhost/test2.php");
    Auto-résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 03/04/2006, 09h42
  2. Javascript : Empecher la validation d'un formulaire
    Par otb82 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/01/2006, 09h46
  3. Ouvrir une popup lors de la validation d'un formulaire
    Par pod1978 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/11/2005, 15h47
  4. Vérification de validation d'un formulaire
    Par tom06440 dans le forum Langage
    Réponses: 8
    Dernier message: 21/09/2005, 14h29
  5. Réponses: 11
    Dernier message: 16/09/2004, 11h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo