|
|
|
@ -412,4 +412,172 @@ function recuperer_entetes($f, $date_verif = '') {
|
|
|
|
|
|
|
|
|
|
return explode("\n", $res['headers']); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!function_exists('recuperer_page')) { |
|
|
|
|
/** |
|
|
|
|
* Obsolète : Récupère une page sur le net et au besoin l'encode dans le charset local |
|
|
|
|
* |
|
|
|
|
* Gère les redirections de page (301) sur l'URL demandée (maximum 10 redirections) |
|
|
|
|
* |
|
|
|
|
* @deprecated 3.1 |
|
|
|
|
* @removed from SPIP 4.0 |
|
|
|
|
* @see recuperer_url() |
|
|
|
|
* @uses recuperer_url() |
|
|
|
|
* |
|
|
|
|
* @param string $url |
|
|
|
|
* URL de la page à récupérer |
|
|
|
|
* @param bool|string $trans |
|
|
|
|
* - chaîne longue : c'est un nom de fichier (nom pour sa copie locale) |
|
|
|
|
* - true : demande d'encodage/charset |
|
|
|
|
* - null : ne retourner que les headers |
|
|
|
|
* @param bool $get_headers |
|
|
|
|
* Si on veut récupérer les entêtes |
|
|
|
|
* @param int|null $taille_max |
|
|
|
|
* Arrêter le contenu au-delà (0 = seulement les entetes ==> requête HEAD). |
|
|
|
|
* Par defaut taille_max = 1Mo. |
|
|
|
|
* @param string|array $datas |
|
|
|
|
* Pour faire un POST de données |
|
|
|
|
* @param string $boundary |
|
|
|
|
* Pour forcer l'envoi par cette méthode |
|
|
|
|
* @param bool $refuser_gz |
|
|
|
|
* Pour forcer le refus de la compression (cas des serveurs orthographiques) |
|
|
|
|
* @param string $date_verif |
|
|
|
|
* Un timestamp unix pour arrêter la récuperation si la page distante |
|
|
|
|
* n'a pas été modifiée depuis une date donnée |
|
|
|
|
* @param string $uri_referer |
|
|
|
|
* Pour préciser un référer différent |
|
|
|
|
* @return string|bool |
|
|
|
|
* - Code de la page obtenue (avec ou sans entête) |
|
|
|
|
* - false si la page n'a pu être récupérée (status different de 200) |
|
|
|
|
**/ |
|
|
|
|
function recuperer_page( |
|
|
|
|
$url, |
|
|
|
|
$trans = false, |
|
|
|
|
$get_headers = false, |
|
|
|
|
$taille_max = null, |
|
|
|
|
$datas = '', |
|
|
|
|
$boundary = '', |
|
|
|
|
$refuser_gz = false, |
|
|
|
|
$date_verif = '', |
|
|
|
|
$uri_referer = '' |
|
|
|
|
) { |
|
|
|
|
// $copy = copier le fichier ? |
|
|
|
|
$copy = (is_string($trans) and strlen($trans) > 5); // eviter "false" :-) |
|
|
|
|
|
|
|
|
|
if (!is_null($taille_max) and ($taille_max == 0)) { |
|
|
|
|
$get = 'HEAD'; |
|
|
|
|
} else { |
|
|
|
|
$get = 'GET'; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$options = array( |
|
|
|
|
'transcoder' => $trans === true, |
|
|
|
|
'methode' => $get, |
|
|
|
|
'datas' => $datas, |
|
|
|
|
'boundary' => $boundary, |
|
|
|
|
'refuser_gz' => $refuser_gz, |
|
|
|
|
'if_modified_since' => $date_verif, |
|
|
|
|
'uri_referer' => $uri_referer, |
|
|
|
|
'file' => $copy ? $trans : '', |
|
|
|
|
'follow_location' => 10, |
|
|
|
|
); |
|
|
|
|
if (!is_null($taille_max)) { |
|
|
|
|
$options['taille_max'] = $taille_max; |
|
|
|
|
} |
|
|
|
|
// dix tentatives maximum en cas d'entetes 301... |
|
|
|
|
$res = recuperer_url($url, $options); |
|
|
|
|
if (!$res) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
if ($res['status'] !== 200) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
if ($get_headers) { |
|
|
|
|
return $res['headers'] . "\n" . $res['page']; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return $res['page']; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (!function_exists('recuperer_lapage')) { |
|
|
|
|
/** |
|
|
|
|
* Obsolete Récupère une page sur le net et au besoin l'encode dans le charset local |
|
|
|
|
* |
|
|
|
|
* @deprecated 3.1 |
|
|
|
|
* @removed from SPIP 4.0 |
|
|
|
|
* @uses recuperer_url() |
|
|
|
|
* |
|
|
|
|
* @param string $url |
|
|
|
|
* URL de la page à récupérer |
|
|
|
|
* @param bool|null|string $trans |
|
|
|
|
* - chaîne longue : c'est un nom de fichier (nom pour sa copie locale) |
|
|
|
|
* - true : demande d'encodage/charset |
|
|
|
|
* - null : ne retourner que les headers |
|
|
|
|
* @param string $get |
|
|
|
|
* Type de requête HTTP à faire (HEAD, GET ou POST) |
|
|
|
|
* @param int|bool $taille_max |
|
|
|
|
* Arrêter le contenu au-delà (0 = seulement les entetes ==> requête HEAD). |
|
|
|
|
* Par defaut taille_max = 1Mo. |
|
|
|
|
* @param string|array $datas |
|
|
|
|
* Pour faire un POST de données |
|
|
|
|
* @param bool $refuser_gz |
|
|
|
|
* Pour forcer le refus de la compression (cas des serveurs orthographiques) |
|
|
|
|
* @param string $date_verif |
|
|
|
|
* Un timestamp unix pour arrêter la récuperation si la page distante |
|
|
|
|
* n'a pas été modifiée depuis une date donnée |
|
|
|
|
* @param string $uri_referer |
|
|
|
|
* Pour préciser un référer différent |
|
|
|
|
* @return string|array|bool |
|
|
|
|
* - Retourne l'URL en cas de 301, |
|
|
|
|
* - Un tableau (entête, corps) si ok, |
|
|
|
|
* - false sinon |
|
|
|
|
**/ |
|
|
|
|
function recuperer_lapage( |
|
|
|
|
$url, |
|
|
|
|
$trans = false, |
|
|
|
|
$get = 'GET', |
|
|
|
|
$taille_max = 1048576, |
|
|
|
|
$datas = '', |
|
|
|
|
$refuser_gz = false, |
|
|
|
|
$date_verif = '', |
|
|
|
|
$uri_referer = '' |
|
|
|
|
) { |
|
|
|
|
// $copy = copier le fichier ? |
|
|
|
|
$copy = (is_string($trans) and strlen($trans) > 5); // eviter "false" :-) |
|
|
|
|
|
|
|
|
|
// si on ecrit directement dans un fichier, pour ne pas manipuler |
|
|
|
|
// en memoire refuser gz |
|
|
|
|
if ($copy) { |
|
|
|
|
$refuser_gz = true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
$options = array( |
|
|
|
|
'transcoder' => $trans === true, |
|
|
|
|
'methode' => $get, |
|
|
|
|
'datas' => $datas, |
|
|
|
|
'refuser_gz' => $refuser_gz, |
|
|
|
|
'if_modified_since' => $date_verif, |
|
|
|
|
'uri_referer' => $uri_referer, |
|
|
|
|
'file' => $copy ? $trans : '', |
|
|
|
|
'follow_location' => false, |
|
|
|
|
); |
|
|
|
|
if (!is_null($taille_max)) { |
|
|
|
|
$options['taille_max'] = $taille_max; |
|
|
|
|
} |
|
|
|
|
// dix tentatives maximum en cas d'entetes 301... |
|
|
|
|
$res = recuperer_url($url, $options); |
|
|
|
|
|
|
|
|
|
if (!$res) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
if ($res['status'] !== 200) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return array($res['headers'], $res['page']); |
|
|
|
|
} |
|
|
|
|
} |