GET vs POST

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Je suis actuellement sur le module PayPal pour un site de vente en ligne.

Ce module a été développé pour PayPal US, et il n'est donc pas très bien adapté à une utilisation avec la plateforme française de Paypal.

Bref, bien que je rame en PHP, j'ai cru comprendre dans le code que le module initial passe les variables vers Paypal en GET, et moi, pour le site français, je dois les passer en POST.

J'ai donc essayé de transformé le "variable_get(...)" du module d'origine en "variable_post(...)" , mais là, on me dit :
"Fatal error: Call to undefined function variable_post()"

Comment faire ??

Version de Drupal : 

Bon, j'ai détourné le problème...

A titre indicatif, pour ceux qui seront confrontés à l'adaptation du module Paypal :

  • J'ai bloqué dans le code toute la partie de transmission des variables en GET vers le serveur Paypal,
  • J'ai fait un renvoi vers une node
  • Dans cette node, j'ai un script PHP qui récupère toutes les variables relatives à la commande
  • J'envoie le tout vers PayPal, en POST

C'est un peu du bricolage, mais ça fonctionne bien !

A ce sujet, comment fait-on pour :
- Afficher le nom de l'utilisateur en ligne
- Envoyer un formulaire sans cliquer (le simple fait d'aller sur la page envoi le formulaire, et renvoie l'utilisateur sur une autre page)

Ouhlà, attention à ne pas tout mélanger. variable_get() est une fonction de l'API Drupal qui permet de récupérer la valeur d'une variable persistente (stockée en BDD). Ca n'a rien à voir avec le GET HTTP.

Quant à la question d'envoyer en POST au lieu de GET, peux-tu nous dire comment la requête initiale est fabriquée ? S'agit-il d'un formulaire sur lequel l'utilisateur clique un bouton "submit" ? Est-ce une requête CURL ? Selon les précisions, je pourrais ptêtre t'en dire plus.

Enfin, pour envoyer un formulaire sans cliquer, tu peux utiliser la fonction drupal_execute().

D'accord, tu m'apprends un truc sur le variable_get() !

A propos de la requete initiale, le script php du module semble réunir toutes les variables relatives à la transaction commerciale, et envoi le tout à Paypal en méthode GET (via l'URL)...

Ce qui déclenche l'envoi, c'est le clic de l'utilisateur sur le bouton "Passer votre commande". Mais dans le code, je n'ai pas trouvé l'équivalent de "method=get", comme en HTML.

Pour la fonction drupal_execute() , ça semble pas mal à première vue... Puis-je l'inclure dans une node contenant du PHP, ou bien c'est à mettre dans un module ?

Il faut que je regarde le code pour comprendre, c'est dans le module paypal à télécharger sur drupal.org ?

Pour l'appel à la fonction, tu peux le mettre où tu veux tant que c'est du code PHP et que tu passes les bons paramètres. C'est plus propre dans un module, mais c'est plus pratique dans un node... à toi de voir.