Je ne sais pas vous, mais moi, cela fait très longtemps que j'essayais de comprendre comment vous pouvez facilement poster un formulaire Web en ligne de commande. Question essentielle au demeurant (je ne sais pas si vous avez tous ce genre de question qui vous vient à l'esprit en marchant, mais moi si !). Cette question, je me la suis posé il y a maintenant une bonne année, en effectuant une marche, lorsque j'étais hospitalisé afin de perdre quelques kilos. Et c'est presque un an plus tard que cette question m'est revenue en tête. Etant devant un serveur web de développement, je me suis atelé à la tâche afin de comprendre et d'essayer de voir comment cela fonctionnait.

Nous sommes bien d'accord que dans cet exemple, nous faisons totalement abstraction des formulaires présentant de la technologie Ajax. L'idée est simple :  Nous avons un formulaire avec 2 éléments:

  • un champ texte que je nomme texte
  • un bouton de validation de type submit

Je ne pense pas qu'il soit possible de faire beaucoup plus simple comme formulaire. Notez toutefois que nous avons besoin du bouton Submit car il va jouer un rôle important puisque justement il envoie, il poste le formulaire. Dans mon exemple, afin de contrôler que le formulaire soit bien posté, je vais simplement afficher, une fois la page postée, le contenu du champ dans lequel j'ai saisi du texte. Vous remarquerez au passage, qu'à des fins de simplification, je mets une valeur par défaut dans ce champ texte. Vous voyez le formulaire HTML est très simple, et ce que nous allons faire, c'est afficher le champ de saisie lorsque l'utilisateur clique sur le bouton Valider, ou plutôt lorsque nous simulons un clic sur le bouton "valider" via la commande en ligne. N'oublions pas l'objectif essentiel de ce tutoriel

Texte :

Je ne pense pas qu'il faille de grandes compétences en programmation pour comprendre ce que fait une code ci-dessus, d'autant plus que je viens de l'expliciter.

Vous reprendrez bien un peu de cURL ?

Sur votre console de votre système d'exploitation, que ce soit un Mac ou une distribution linux, nous allons voir comment fonctionne un POST en ligne de commande. Je souligne le fait que je n'ai aucune compétence Windows qui me permettre de vous certifier que la commande en question existe sur ce système d'exploitation. (Si vous faites ce test, prévenez moi si ca marche ou pas.)

En revanche, sous Linux et sur Mac, la commande et la librairie cURL et fonctionnent à merveille. Dans notre cas très simple, cette commande se décompose en quatre grands groupe :

  • Appel de cette commande,
  • spécification du paramètre spécifiant le type de requête (POST, GET, HEAD...) Http,
  • l'URL de la commande que nous souhaitons lancer,
  • et enfin l'ensemble des paramètres que nous voulons passer à la requête en question.

Dans l'exemple ci-dessus, la requête fonctionne de la manière suivante:

cURL -X POST http://localhost/test.php -d "texte=toto&valider=valider"

Veuillez noter au passage une certaine similitude aux paramètres passés dans une URL d'un navigateur web. Puisque vous êtes sur votre ligne de commande, notez que la réponse retournée est affiché telle qu'elle le serait dans votre navigateur web, puisque c'est ce typed e logiciel qui est sensé l'appeler. Cela explique notamment pourquoi vous avez du code html retourné. Il s'agit en fait de la page que votre navigateur aurait à interpréter. Mais votre requête étant passé, l'action décrite dans l' "action" de la balise form a été effectuée. Nous avons donc lancé notre requête en ligne de commande !

Alors à quoi cela peut-il nous servir?

Il y a encore quelques années, a l'heure où AJAX n'existait encore pas, beaucoup d'éditeurs de logiciels écrivait encore des logiciels à installer sur vos machines, ceci permettant de mettre en place une simplicité et une meilleure ergonomie qui était à l'époque impossible d'obtenir sur le web. Lorsqu'un éditeur écrivait un logiciel dans lequel vous saisissiez des informations qui devaient être publiées sur le web, c'est la méthode par laquelle nous pouvions récupérer les informations saisies dans les champs du logiciel, dans le but de préparer notre requête HTTP, et de faire correspondre les données que vous aviez saisie au formulaire Web adéquat existant sur le serveur. (vous comprenez mieux les antispam des formulaires de saisies maintenant ?)

De nos jours, il peut encore être intéressant de connaître cette technique, notamment pour aller faire du remplissage automatique de site, ou plutôt de formulaire de certains sites, à partir de données que vous possédez, et que vous souhaitez implanter sur un site distant. Inutile de tout ressaisir, vous n'êtes pas secrétaire à mais informaticien, vous pouvez donc lire les données d'origine de votre fichier de départ (un fichier Excel, un fichier texte ...), et les envoyer sur votre base de données de votre serveur par l'intermédiaire de votre formulaire que vous avez mis en place pour cette action, sans remplir manuellement chaque champs de votre formulaire. Cette technique est donc très pratique pour mettre en place des passerelles de saisies c'est la raison pour laquelle je tenais à écrire ce petit article.