From dbd6e4bb1f24a5ebd35b355726ca1024e396eeb8 Mon Sep 17 00:00:00 2001 From: Cerdic <cedric@yterium.com> Date: Tue, 8 Mar 2016 09:52:51 +0000 Subject: [PATCH] Report de r22882 : Bugfix sur fonction de compatibilite recuperer_lapage + recuperer_url ne force un POST que si datas contient bien des donnees et pas juste un header --- ecrire/inc/distant.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/ecrire/inc/distant.php b/ecrire/inc/distant.php index 9fd383c6ff..c0b08a15b9 100644 --- a/ecrire/inc/distant.php +++ b/ecrire/inc/distant.php @@ -248,7 +248,7 @@ function prepare_donnees_post($donnees, $boundary = '') { * bool transcoder : true si on veut transcoder la page dans le charset du site * string methode : Type de requête HTTP à faire (HEAD, GET ou POST) * int taille_max : Arrêter le contenu au-delà (0 = seulement les entetes ==> requête HEAD). Par defaut taille_max = 1Mo ou 16Mo si copie dans un fichier - * string|array datas : Pour faire un POST de données (force la methode POST si non vide) + * string|array datas : Pour envoyer des donnees (array) et/ou entetes (string) (force la methode POST si donnees non vide) * string boundary : boundary pour formater les datas au format array * bool refuser_gz : Pour forcer le refus de la compression (cas des serveurs orthographiques) * int if_modified_since : Un timestamp unix pour arrêter la récuperation si la page distante n'a pas été modifiée depuis une date donnée @@ -295,12 +295,14 @@ function recuperer_url($url, $options = array()) { } if (!empty($options['datas'])) { - $options['methode'] = 'POST'; list($head, $postdata) = prepare_donnees_post($options['datas'], $options['boundary']); if (stripos($head, "Content-Length:") === false) { $head .= 'Content-Length: ' . strlen($postdata); } $options['datas'] = $head . "\r\n\r\n" . $postdata; + if (strlen($postdata)) { + $options['methode'] = 'POST'; + } } // Accepter les URLs au format feed:// ou qui ont oublie le http:// ou les urls relatives au protocole @@ -658,14 +660,14 @@ function recuperer_lapage( // dix tentatives maximum en cas d'entetes 301... $res = recuperer_url($url, $options); - if ($res) { + if (!$res) { return false; } if ($res['status'] !== 200) { return false; } - return array($res['headers'], $res['result']); + return array($res['headers'], $res['page']); } /** -- GitLab