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

Conception Web Discussion :

[CGI C/C++]Données d'un formulaire dans stdin


Sujet :

Conception Web

  1. #1
    Invité
    Invité(e)
    Par défaut [CGI C/C++]Données d'un formulaire dans stdin
    Bonjour,

    Tout d'abord désolé si je ne poste pas au bon endroit, mais comme ce n'est pas un problème de langage C/C++ intrinsèquement, je n'ai pas trouvé de meilleur endroit.

    Voici :
    Je dispose d'un serveur Tinyweb sur lequel je fais du C++ avec CGI (contraintes techniques, je n'y peux rien). Je récupère donc les données d'un formulaire par le flux standard d'entrée.
    J'ai trouvé un parseur fonctionnel ici, et je m'en servais jusqu'à présent avec des formulaires simples. A présent j'ai besoin d'uploader des fichiers (enctype="multipart/form-data"), mais je remarque que le parseur ignore le 3eme champ file.
    Je décide de descendre d'un niveau pour consulter le stdin pur en C (fread(chaine,atoi(getenv("CONTENT_LENGTH")),1,stdin);) et en C++ (cout << cin), le fread boucle à l'infini et lorsque je stoppe le processus manuellement je n'obtiens pas du tout une chaine cohérente de la forme x=a&y=b&[...], mais des chiffres aléatoires. L'affichage de cin donne quelque chose comme "0047C158"...

    En enlevant le enctype="multipart/form-data", plus de problème et une chaine de requète cohérente.

    Questions :
    - Qu'arrive-t-il à la chaine passée à stdin avec un enctype multipart/form-data ?
    - Pourquoi le parseur n'interprète-il pas le 3ème champ fichier ?
    Dernière modification par 12monkeys ; 22/07/2010 à 22h52. Motif: le tag Résolu s'ajoute en cliquant sur le bouton et non en éditant le titre

  2. #2
    Invité
    Invité(e)
    Par défaut
    Résolu.
    Ce parseur ne fonctionne pas si le fichier qu'on essaye d'uploader est vide (il a un comportement chaotique).
    Ceci étant dit, je n'explique toujours pas pourquoi consulter le stdin brut donne de telles choses avec un type d'encodage multipart.
    Apparemment, avec le fread je voyais le début de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    -----------------------------22725130318492
    
    Content-Disposition: form-data; name="fichier2"; filename=""
    
    Content-Type: application/octet-stream
    (C'est ce qui sort lorsque j'essaye d'afficher la valeur d'un fichier vide avec le parseur.)
    Mais alors pourquoi n'avais-je pas "fichier=[...]&[...], c'est-à-dire la forme correcte de la chaine de requête ?

    Si quelqu'un connaissant bien le protocole HTTP passe par ici, je veux bien une réponse.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Je sais que je ne suis pas censé faire de Up mais ça fait bien longtemps et je n'ai toujours pas compris ce qu'on reçoit en entrée d'un CGI.
    Si quelqu'un pouvait m'expliquer, je lui en serais très reconnaissant.

Discussions similaires

  1. [MySQL] Insérer des données d'un formulaire dans la base
    Par ciel65 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 15/01/2007, 09h39
  2. Réponses: 6
    Dernier message: 01/08/2006, 18h45
  3. Réponses: 8
    Dernier message: 11/07/2006, 14h20
  4. Réponses: 1
    Dernier message: 29/05/2006, 11h01
  5. insertion de donnée d'un formulaire dans un base mysql
    Par frans2111 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 14/10/2005, 23h34

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