Browse Source

Ajout de recuperer_page et recuperer_lapage

master
Matthieu Marcillaud 4 months ago
parent
commit
149d4ca307
  1. 168
      grenier_40/grenier_40_autres.php

168
grenier_40/grenier_40_autres.php

@ -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']);
}
}
Loading…
Cancel
Save