[PHP] Curl boucle infinie

toto -  
 toto -
Bonjour,

Je ne comprends pas pourquoi quand je fais une requete en POST (en GET ca marche bien), il ne fait rien et il cherche indéfiniment la page:

$curl = curl_init(); 
   
  $header[0] = "Accept: text/html, application/xhtml+xml, */*"; 
  $header[] = "Cache-Control: no-cache"; 
  $header[] = "Connection: Keep-Alive"; 
  $header[] = "Accept-Language: fr-FR"; 
  $header[] = "Content-Type: text/plain"; 

  curl_setopt($curl, CURLOPT_URL, $url); 
  curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); 
  curl_setopt($curl, CURLOPT_HTTPHEADER, $header); 
  curl_setopt($curl, CURLOPT_REFERER, 'https://xxx.xxx/xxx/xxx?xxx'); 
  curl_setopt($curl, CURLOPT_ENCODING, 'gzip,deflate'); 
  curl_setopt($curl, CURLOPT_AUTOREFERER, true); 
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
  curl_setopt($curl, CURLOPT_TIMEOUT, 10); 

  curl_setopt($curl, CURLOPT_POST, 1); 
  curl_setopt($curl, CURLOPT_POSTFIELDS, $body); 

   
  $html = curl_exec($curl); 
  curl_close($curl); 

  return $html;


Quel est le probleme ???

A voir également:

5 réponses

toto
 
Personne ? :(
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
Salut toto,

Il y a quoi dans "$body" ?

Sinon, fait quelque chose de plus simple en t'inspirant de ceci, par exemple :

https://forums.commentcamarche.net/forum/affich-27227895-communication-automatique-entre-deus-serveurs-web-php-mysql#13

et ajoute ensuite des options additionnelles, si tu en as réellement besoin, et vois celles qui bloquent éventuellement la requête.


Dal
0
toto
 
Merci d'avoir répondu.

En fait le problème ne vient pas de la, ca vient du fait que je suis en HTTPS et donc il faut accepter le certif et l'authent. Donc c'est pas aussi trivial qu'avec du http :s.
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
Re,

S'il s'agit d'un problème de certificat non reconnu, et que la vérification du certificat n'est pas indispensable pour toi, tu peux paramétrer cURL pour passer ces vérifications, et mettant les paramètres suivants à 0 :

CURLOPT_SSL_VERIFYPEER 
CURLOPT_SSL_VERIFYHOST 

Du moins, c'est comme cela que fonctionne libcurl, lorsque je l'ai utilisé pour la dernière fois dans un projet en C.


Dal
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
toto
 
Oui en effet j'avais changé mon code hier en rajoutant les no verify.

Mais en fait mon site utilise de l'authentification avec token RSA, donc normalement il faudrait rajouter l'authent avec un setopt mais vu que c'est un token RSA qui change tous les 30 secondes c'est juste pas possible ^^.

Normalement je forge ma requete curl quand l'utilisateur est loggué, donc peut être n'ai je pas besoin de rajouter l'authent ?
Du coup j'ai laissé tombé, ca me parait impossible.

Si vous avez des idées je suis preneur :).
0
[Dal] Messages postés 6373 Statut Contributeur 1 106
 
Ah, les joyeusetés des tokens.

C'est du PKCS#11 ?

Je me suis pris la tête dessus il y a quelques semaines sur un programme en C sous Windows et Libcurl, en potassant les discussions comme celles-ci : https://curl.se/mail/lib-2009-02/0197.html et https://curl.se/mail/lib-2007-03/0078.html qui parle d'utiliser NSS avec cURL, qui supporte PKCS#11. Il y a aussi un patch qui traîne sur Internet, et qui serait capable de dialoguer avec une clé de ce type (je n'ai plus le lien, mais je devrai pouvoir le retrouver si cela t'intéresse), mais je pense qu'il n'a pas été repris par l'équipe qui développe cURL et il était sensé fonctionner sur la version patchée en question (donc potentiellement plus sur les versions actuelles, sauf à en adapter le code).

Au final, j'ai laissé tomber et fait autrement, en automatisant sous Windows l'intéraction avec le driver Windows du constructeur pilotant la clef.

Note aussi que d'après https://curl.se/changes.html cURL supporte l'authentification PKCS12 (si ton token est conforme à cette norme, tu as peut-être de meilleures chances).

Bon courage :-)


Dal
0
toto
 
A vrai dire le token n'est pas prédictible c'est un token physique x).

Du coup j'ai fait autrement, par un form html j'ai réussi a faire ce que je voulais faire.
Lors de la soumission de l'action, le navigateur reprends les cookies du site vers lequel je voulais faire ma requête (donc plus de soucis de token vu que c'est repris dynamiquement).

Attention toutefois, vous ne pourrez pas modifier le referer comme avec curl (probleme de same origin policy ;)).
0