Querystring dont la valeur d'une variable est url

Eléphant du PHP | 59 Messages

19 mars 2011, 23:16

Bonjour

Je fais une http request vers une page sensée me donner une réponse
Il faut que je fournisse à cette page une url contenant une querystring.
J'utilise le code suivant :
$url="pageDontJattendUneReponse.php";

$postvars.="&NOM=MonNom";
$postvars.="&URL=http://www.monurl.php?var1=valeur1&var2=valeur2";

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postvars);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,0);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

$response = curl_exec($ch);


Comment encoder ma variable URL de manière à ce qu'il ne prenne pas var1 et var2 comme des variables POST?

Merci pour votre réponse.

ViPHP
xTG
ViPHP | 7331 Messages

20 mars 2011, 00:23

As-tu essayé avec urlencode() ?

Invité
Invité n'ayant pas de compte PHPfrance

20 mars 2011, 06:07

Oui mais ça ne marche pas car il me considère le paramètre comme invalide.

J'aurai pu penser que tout simplement il n'accepte pas qu'on lui passe des url en post contenant une querystring,
Mais j'ai testé en .NET et j'arrive à appeler le même fichier distant et j'ai une réponse positive en lui envoyant les même paramètres (utilisation de l'objet WebRequest conjointement avec une collection NameVluePairCollection contenant les paramètres).

Mais en situation réelle il faut que je le fasse en php et je n'y arrive pas.

ViPHP
xTG
ViPHP | 7331 Messages

20 mars 2011, 09:59

Bizarre... Normalement ils devraient pas être interprétés les & après passage dans urlencode()...
Et avec htmlentities() ?

Eléphant du PHP | 59 Messages

20 mars 2011, 19:46

non ça ne marche pas non plus.

En fait pour être plus précis j'effectue un appel à Paypal vers la methode SetExpressCheckout.
J'ai aussi essayé avec un table associatif mais ça ne change rien :

Code : Tout sélectionner

$postvar= array( USER => 'Utilisateur', PWD => 'MonMotDePasse', SIGNATURE => 'AKt4cwffKF0jdLEq-aqqY8pe8L1FAcvxAgCAqdgLM679367j1ch.9j3I', METHOD => 'SetExpressCheckout', VERSION => '59', PAYMENTACTION => 'Sale', AMT => '20', CURRENCYCODE => 'EUR', LANDINGPAGE => 'Billing', NOSHIPPING => '1', CANCELURL => 'http://www.urlderetour.fr?statut=nok', RETURNURL => 'http://www.urlderetour.fr?statut=ok'); $url = 'https://api-3t.sandbox.paypal.com/nvp'; $ch = curl_init($url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postvar)); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT,0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $response = curl_exec($ch); curl_close($ch); echo $response;