本文整理汇总了PHP中recuperer_page函数的典型用法代码示例。如果您正苦于以下问题:PHP recuperer_page函数的具体用法?PHP recuperer_page怎么用?PHP recuperer_page使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了recuperer_page函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: genie_clevermail_auto_ajout_abonnes_dist
function genie_clevermail_auto_ajout_abonnes_dist()
{
if ($autoListes = sql_select("lst_id, lst_name, lst_auto_subscribers, lst_auto_subscribers_mode", "spip_cm_lists", "lst_auto_subscribers != '' AND lst_auto_subscribers_updated < " . (time() - 60 * 60 * 24))) {
include_spip('inc/distant');
while ($liste = sql_fetch($autoListes)) {
if ($adresses = recuperer_page($liste['lst_auto_subscribers'])) {
if (!clevermail_verification_adresses_email($adresses)) {
// XXX : log en chaîne de langue
spip_log('Le format des adresses e-mail ne semble pas bon dans le fichier distant d\'adresses de la liste « ' . $liste['lst_name'] . ' » (id=' . $liste['lst_id'] . ') : ' . $liste['lst_auto_subscribers'], 'clevermail');
} else {
$retour = clevermail_abonnes_ajout(array($liste['lst_id']), intval($liste['lst_auto_subscribers_mode']), $adresses);
sql_updateq("spip_cm_lists", array('lst_auto_subscribers_updated' => time()), "lst_id=" . $liste['lst_id']);
// XXX : log en chaîne de langue
$msg = 'Ajout automatique d\'abonnés à la liste « ' . $liste['lst_name'] . ' » (id=' . $liste['lst_id'] . ') à partir du fichier ' . $liste['lst_auto_subscribers'] . ' : ';
if ($retour === false) {
$msg .= _T('clevermail:aucun_nouvel_abonne');
} else {
$msg .= $retour['nb_nouv'] > 0 ? $retour['nb_nouv'] . _T('clevermail:n_nouveaux_abonnes') : _T('clevermail:aucun_nouvel_abonne');
$msg .= $retour['nb_nouv'] > 0 && $retour['nb_maj'] > 0 ? _T('clevermail:nouveaux_abonnes_et') : '';
$msg .= $retour['nb_maj'] > 0 ? $retour['nb_maj'] . _T('clevermail:changements_mode_abonnement') : '';
spip_log($msg, 'clevermail');
}
}
} else {
// XXX : log en chaîne de langue
spip_log('Impossible de télécharger le fichier distant d\'adresses de la liste « ' . $liste['lst_name'] . ' » (id=' . $liste['lst_id'] . ') : ' . $liste['lst_auto_subscribers'], 'clevermail');
}
}
}
return 1;
}
示例2: clevermail_post_update
function clevermail_post_update($pst_id)
{
if ($pst_id == intval($pst_id)) {
$lst_id = sql_getfetsel('lst_id', 'spip_cm_posts', 'pst_id=' . intval($pst_id));
$post = array('lst_id' => intval($lst_id), 'pst_date_create' => time());
$list = sql_fetsel('*', 'spip_cm_lists', 'lst_id = ' . intval($lst_id));
// Traitement de la source HTML
if (strpos($list['lst_url_html'], 'http://') !== false) {
include_spip('inc/distant');
$url_html = $list['lst_url_html'] . (strpos($list['lst_url_html'], '?') !== false ? '&' : '?') . 'date=' . date("Y-m-d", $last_create) . '&lst_id=' . intval($lst_id);
$post['pst_html'] = recuperer_page($url_html);
} else {
$contexte = array('date' => date("Y-m-d", $last_create), 'lst_id' => intval($lst_id));
// on passe la globale lien_implicite_cible_public en true
// pour avoir les liens internes en public (en non prive d'apres le contexte)
// credit de l'astuce: denisb & rastapopoulos & erational
$GLOBALS['lien_implicite_cible_public'] = true;
$post['pst_html'] = recuperer_fond($list['lst_url_html'], $contexte);
// on revient a la config initiale
unset($GLOBALS['lien_implicite_cible_public']);
}
// Traitement de la source texte
if ($list['lst_url_text'] != '') {
if (strpos($list['lst_url_text'], 'http://') !== false) {
include_spip('inc/distant');
$url_text = $list['lst_url_text'] . (strpos($list['lst_url_text'], '?') !== false ? '&' : '?') . 'date=' . date("Y-m-d", $last_create) . '&lst_id=' . intval($lst_id);
$post['pst_text'] = recuperer_page($url_text);
} else {
$contexte = array('date' => date("Y-m-d", $last_create), 'lst_id' => intval($lst_id));
// on passe la globale lien_implicite_cible_public en true
// pour avoir les liens internes en public (en non prive d'apres le contexte)
// credit de l'astuce: denisb & rastapopoulos & erational
$GLOBALS['lien_implicite_cible_public'] = true;
$post['pst_text'] = recuperer_fond($list['lst_url_text'], $contexte);
// on revient a la config initiale
unset($GLOBALS['lien_implicite_cible_public']);
}
$post['pst_text'] = strip_tags($post['pst_text']);
} else {
// TODO : essayer d'utiliser TEN : http://www.headstar.com/ten/
include_spip('classes/facteur');
$post['pst_text'] = Facteur::html2text($post['pst_html']);
}
if (trim($post['pst_html']) != '' && trim($post['pst_text']) != '') {
/*
if (preg_match(",<title>(.*)</title>,", $post['pst_html'], $regs)) {
$post['pst_subject'] = trim($regs[1]);
} else {
$post['pst_subject'] = 'Aucun sujet';
}
*/
$pst_id = sql_updateq('spip_cm_posts', $post, 'pst_id=' . $pst_id);
spip_log('Mise a jour du message « ' . $post['pst_subject'] . ' » (id=' . $pst_id . ') dans la liste « ' . $list['lst_name'] . ' » (id=' . $lst_id . ')', 'clevermail');
return $pst_id;
} else {
spip_log('Mise a jour d\'un message dans la liste « ' . $list['lst_name'] . ' » (id=' . $lst_id . ') impossible, contenu vide à ' . $url_html . ' et ' . $url_text, 'clevermail');
return false;
}
}
}
示例3: wha_check_offer_dist
function wha_check_offer_dist($id_abonnement)
{
$res = spip_query('SELECT * FROM spip_abonnements WHERE id_abonnement=' . intval($id_abonnement));
if (!($row = spip_fetch_array($res))) {
return false;
}
if ($row['mode_paiement'] != 'wha' or !($uoid = $row['abonne_uid'])) {
spip_log("wha_check_offer :Erreur : abonnement {$id_abonnement} n'a pas ete souscrit avec wha (ou pas d'uoid)", 'wha_abo_check');
return false;
}
if (!($confirm = $row['confirm']) or !($confirm = unserialize($confirm))) {
spip_log("wha_check_offer :Erreur : abonnement {$id_abonnement} n'a pas d'url node enregistree", 'wha_abo_check');
return false;
}
$config = array('MERCHANT_ID' => $confirm['partner'], 'KEY_ID' => $confirm['key'], 'node' => $confirm['node']);
$url_check = wha_url_check_abo($uoid, 'love', $config);
include_spip('inc/distant');
$ack = @recuperer_page($url_check);
spip_log($t = "wha_check_offer : reponse a {$url_check} : {$ack}", 'wha_abo_check');
if (!$ack or !($unsign = wha_unsign($ack)) or !($args = wha_extract_args(reset($unsign)))) {
spip_log($t = "wha_check_offer : pas de reponse valide {$url_check} : {$ack}", 'wha_abo_check');
return null;
}
if (isset($args['c']) and $args['c'] == 'ack') {
return true;
}
if (isset($args['e']) and in_array($args['e'], array(0, 1, 14, 15))) {
return false;
}
return null;
}
示例4: radiobot_scan
function radiobot_scan($id_syndic_article, $titre_parent = "Sans titre", $url, $date)
{
include_spip('inc/distant');
$page_distante = recuperer_page($url);
//chercher un mp3 avec une url absolue
preg_match_all(",http://[a-zA-Z0-9\\s()\\/\\:\\._%\\?+'=~-]*\\.mp3,Uims", $page_distante, $matches, PREG_SET_ORDER);
if (count($matches)) {
foreach ($matches as $m) {
// virer ici les faux mp3
if (!preg_match(",^http://twitter.com/intent/tweet,", $m[0])) {
$enclosures[] = $m[0];
}
}
} else {
// chercher un lien relatif
//chercher un mp3
preg_match_all(",(href|src)=(\"|')([a-zA-Z0-9\\s()\\/\\:\\._%\\?+'=~-]*\\.mp3),Uims", $page_distante, $matches, PREG_SET_ORDER);
foreach ($matches as $m) {
$parse_url = parse_url($url);
$enclosures[] = "http://" . $parse_url['host'] . $m[3];
}
}
$enclosures = array_unique($enclosures);
if (is_array($enclosures) and sizeof($enclosures) > 0) {
if (!$date) {
$date = date("Y-m-d h:i:s");
}
inserer_document_syndic_article($enclosures, $id_syndic_article, $date, $titre_parent);
}
}
示例5: hal_parse
function hal_parse($url)
{
$url = trim(html_entity_decode($url), "\"' ");
$infos = parse_url($url);
$ip = gethostbyname($infos['host']);
if ($ip != '193.48.96.10') {
spip_log("Url invalid", _LOG_ERREUR);
return;
}
spip_log(sprintf("[hal_parse] init_http(%s)", $url), _LOG_DEBUG);
$content = recuperer_page($url);
spip_log(sprintf("[hal_parse] init_http(%s): Done", $url), _LOG_DEBUG);
$dom = new DomDocument('1.0', 'UTF-8');
$dom->preserveWhiteSpace = false;
$str = mb_convert_encoding($content, "HTML-ENTITIES");
@$dom->loadHTML($str);
$xpath = new DOMXpath($dom);
$entries = $xpath->query('//div[@id="res_script"]');
if ($entries->length == 0) {
spip_log("No tag found ...", _LOG_ERREUR);
return;
}
$res_script = $dom->saveXML($entries->item(0));
return $res_script;
}
示例6: inc_bank_recuperer_post_https_dist
/**
* Recuperer une url en https avec curl ou recuperer_page sinon
*
* @param string $url
* @param array|string $datas
* $datas peut etre un tableau de paire=>valeur, ou une chaine de get paire=valeur&...
* @param string $user_agent
* @return array
*/
function inc_bank_recuperer_post_https_dist($url, $datas = '', $user_agent = '')
{
if (!function_exists('curl_init')) {
include_spip('inc/distant');
$nvpreq = $datas;
if (is_array($datas) and count($datas)) {
$nvpreq = http_build_query($datas);
}
spip_log("bank_recuperer_post_https sur {$url} via recuperer_page : {$nvpreq}", 'bank');
$response = recuperer_page($url, false, false, 1048576, $datas, null);
$erreur = $response === false;
$erreur_msg = "recuperer_page impossible";
} else {
//setting the curl parameters.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
//curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
//turning off the server and peer verification(TrustManager Concept).
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
//curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
//curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
//curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__)."/cert/api_cert_chain.crt");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_FORBID_REUSE, true);
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_ENCODING, 'gzip');
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
//if USE_PROXY constant set to TRUE in Constants.php, then only proxy will be enabled.
//Set proxy name to PROXY_HOST and port number to PROXY_PORT in constants.php
#if(_PAYPAL_USE_PROXY)
#curl_setopt ($ch, CURLOPT_PROXY, _PAYPAL_PROXY_HOST.":"._PAYPAL_PROXY_PORT);
//NVPRequest for submitting to server
$nvpreq = "";
if (is_array($datas) and count($datas)) {
$nvpreq = http_build_query($datas);
}
spip_log("bank_recuperer_post_https sur {$url} via curl : {$nvpreq}", 'bank');
if (!$user_agent) {
$user_agent = "SPIP/Bank";
}
//setting the nvpreq as POST FIELD to curl
curl_setopt($ch, CURLOPT_POSTFIELDS, $nvpreq);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Connection: Close', "User-Agent: {$user_agent}"));
//getting response from server
$response = curl_exec($ch);
$erreur = curl_errno($ch);
$erreur_msg = curl_error($ch);
if (!$erreur) {
//closing the curl
curl_close($ch);
}
}
return array($response, $erreur, $erreur ? $erreur_msg : '');
}
示例7: presta_internetplus_inc_traiter_reponse_wha_dist
function presta_internetplus_inc_traiter_reponse_wha_dist($config, $m, $args, $partnerId, $keyId)
{
$mode = 'wha';
// historique...
$config_id = bank_config_id($config);
$v = $args['v'];
$mp = $v['mp'];
if (!isset($mp['id_transaction']) or !($id_transaction = $mp['id_transaction'])) {
bank_transaction_invalide(0, array('where' => 'wha_traiter_reponse', 'mode' => $mode, 'erreur' => "pas de id_transaction en retour", 'log' => $m));
return array(0, false, $mp);
}
// verifier que la transaction est connue
$res = sql_select("*", "spip_transactions", "id_transaction=" . intval($id_transaction));
if (!($row = sql_fetch($res))) {
bank_transaction_invalide($id_transaction, array('where' => 'wha_traiter_reponse', 'mode' => $mode, 'erreur' => "transaction inconnue", 'log' => $m));
return array($id_transaction, false, $mp);
}
if (!$row['id_auteur']) {
if (!isset($GLOBALS['visiteur_session']['id_auteur']) or !$GLOBALS['visiteur_session']['id_auteur']) {
$_SESSION['wha_traiter_reponse_wha'] = array('m' => $m, 'args' => $args, 'partnerId' => $partnerId, 'keyId' => $keyId);
return array($id_transaction, 'delayed', $mp);
} else {
sql_updateq("spip_transactions", array("id_auteur" => $row['id_auteur'] = $GLOBALS['visiteur_session']['id_auteur']), "id_transaction=" . intval($id_transaction));
}
}
if ($row['statut'] !== 'ok') {
// ok, on traite le reglement
$montant_regle = $row['montant'];
// on verifie que le montant est bon !
/*$montant_regle = isset($v['amt'])?$v['amt']:0;
if ($montant_regle!=$row['montant']){
spip_log($t = "wha_traiter_reponse : id_transaction $id_transaction, montant regle $montant_regle!=".$row['montant'].":".$m,'internetplus'._LOG_ERREUR);
// on log ca dans un journal dedie
spip_log($t,'internetplus_partiels'._LOG_ERREUR);
// on est sympa avec le client, dans le doute on livre le produit
}*/
$authorisation_id = $v['tId'];
// declencher l'url de confirmation de reglement
$node_response = $v['rt'];
$config = array('MERCHANT_ID' => $partnerId, 'KEY_ID' => $keyId, 'node' => $node_response);
$url = wha_url_confirm($authorisation_id, $row['montant'], $config);
include_spip('inc/distant');
$ack = @recuperer_page($url);
if (!$ack or !($unsign = wha_unsign($ack)) or !($args = wha_extract_args(reset($unsign))) or !isset($args['c']) or !$args['c'] == 'ack') {
bank_transaction_invalide($id_transaction, array('where' => 'wha_traiter_reponse', 'mode' => $mode, 'erreur' => "pas de confirmation de debit / {$url} : {$ack}", 'update' => true, 'log' => $m));
return array($id_transaction, false, $mp);
}
sql_updateq("spip_transactions", array("autorisation_id" => $authorisation_id, "mode" => "wha/{$config_id}", "montant_regle" => $montant_regle, "date_paiement" => date('Y-m-d H:i:s'), "statut" => 'ok', "reglee" => 'oui'), "id_transaction=" . intval($id_transaction));
spip_log("wha_traiter_reponse : id_transaction {$id_transaction}, reglee", $mode . _LOG_INFO_IMPORTANTE);
spip_log("{$m}", $mode . '_autorisations' . _LOG_INFO_IMPORTANTE);
}
$regler_transaction = charger_fonction('regler_transaction', 'bank');
$regler_transaction($id_transaction, array('row_prec' => $row));
return array($id_transaction, true, $mp);
}
示例8: produire_image_math
function produire_image_math($tex) {
global $traiter_math;
switch ($traiter_math) {
// Attention: mathml desactiv'e pour l'instant
case 'mathml':
$ext = '.xhtml';
$server = $GLOBALS['mathml_server'];
break;
case 'tex':
$ext = '.png';
$server = $GLOBALS['tex_server'];
break;
default:
return $tex;
}
// Regarder dans le repertoire local des images TeX et blocs MathML
if (!@is_dir($dir_tex = _DIR_VAR.'cache-TeX/'))
@mkdir ($dir_tex, _SPIP_CHMOD);
$fichier = $dir_tex .md5(trim($tex)).$ext;
if (!@file_exists($fichier)) {
// Aller chercher l'image sur le serveur
if ($server) {
spip_log($url = $server.'?'.rawurlencode($tex));
include_spip('inc/distant');
recuperer_page($url,$fichier);
}
}
// Composer la reponse selon presence ou non de l'image
$tex = entites_html($tex);
if (@file_exists($fichier)) {
// MathML
if ($traiter_math == 'mathml') {
return join(file("$fichier"),"");
}
// TeX
else {
list(,,,$size) = @getimagesize($fichier);
$alt = "alt=\"$tex\" title=\"$tex\"";
return "<img src=\"$fichier\" style=\"vertical-align:middle;\" $size $alt />";
}
}
else // pas de fichier
return "<tt><span class='spip_code' dir='ltr'>$tex</span></tt>";
}
示例9: spip_xml_load
function spip_xml_load($fichier, $strict=true, $clean=true, $taille_max = 1048576, $datas='', $profondeur = -1){
$contenu = "";
if (preg_match(",^(http|ftp)://,",$fichier)){
include_spip('inc/distant');
$contenu = recuperer_page($fichier,false,false,$taille_max, $datas);
}
else lire_fichier ($fichier, $contenu);
$arbre = array();
if ($contenu)
$arbre = spip_xml_parse($contenu, $strict, $clean, $profondeur);
return count($arbre)?$arbre:false;
}
示例10: presta_internetplus_inc_confirm_offer_dist
function presta_internetplus_inc_confirm_offer_dist($id_transaction, $uoid, $confirm)
{
$config = array('MERCHANT_ID' => $confirm['partner'], 'KEY_ID' => $confirm['key'], 'node' => $confirm['node']);
$url_confirm = wha_url_confirm_abo($uoid, $config);
include_spip('inc/distant');
$ack = @recuperer_page($url_confirm);
if (!$ack or !($unsign = wha_unsign($ack)) or !($args = wha_extract_args(reset($unsign))) or !isset($args['c']) or !$args['c'] == 'ack') {
spip_log($t = "wha_confirm_offer : transaction {$id_transaction}, echec confirmation de debit {$uoid} / {$url_confirm} : {$ack}", 'internetplus_abo' . _LOG_ERREUR);
spip_log($t, 'internetplus_abo_hs' . _LOG_ERREUR);
return false;
}
return true;
}
示例11: presta_paybox_payer_resilier_dist
function presta_paybox_payer_resilier_dist($uid)
{
$parm = paybox_pbx_ids();
$args = "VERSION=001" . "&TYPE=001" . "&SITE=" . str_pad($parm['PBX_SITE'], 7, "0", STR_PAD_LEFT) . "&MACH=" . str_pad($parm['PBX_RANG'], 3, "0", STR_PAD_LEFT) . "&IDENTIFIANT=" . $parm['PBX_IDENTIFIANT'] . "&ABONNEMENT=" . $uid;
$url = _PAYBOX_URL_RESIL . "?" . $args;
include_spip('inc/distant');
$reponse = recuperer_page($url);
spip_log("uid:{$uid}, {$url}, reponse:{$reponse}", 'paybox_abos_resil');
parse_str($reponse, $res);
if ($res['ACQ'] == 'OK' and $res['ABONNEMENT'] == $uid) {
return true;
}
return false;
}
示例12: spip_xml_load
/**
* Lit un fichier xml donné et renvoie son arbre.
*
* @example
* ```
* include_spip('inc/xml');
* $arbre = spip_xml_load(_DIR_PLUGINS . "$plug/plugin.xml");
* ```
*
* @uses spip_xml_parse()
*
* @param string $fichier
* Chemin local ou URL distante du fichier XML
* @param bool $strict
* true pour râler si une balise n'est pas correctement fermée, false sinon.
* @param bool $clean ?
* @param int $taille_max
* Taille maximale si fichier distant
* @param string|array $datas
* Données à envoyer pour récupérer le fichier distant
* @param int $profondeur ?
* @return array|bool
* - array : l'arbre XML,
* - false si l'arbre xml ne peut être créé ou est vide
**/
function spip_xml_load($fichier, $strict = true, $clean = true, $taille_max = 1048576, $datas = '', $profondeur = -1)
{
$contenu = "";
if (tester_url_absolue($fichier)) {
include_spip('inc/distant');
$contenu = recuperer_page($fichier, false, false, $taille_max, $datas);
} else {
lire_fichier($fichier, $contenu);
}
$arbre = array();
if ($contenu) {
$arbre = spip_xml_parse($contenu, $strict, $clean, $profondeur);
}
return count($arbre) ? $arbre : false;
}
示例13: is_feed
/**
* une fonction qui permet de si un lien est un feed ou nom,
* si c'est un feed elle retourne son type, si c'est pas un feed elle retourne 0,
* cette verification est évidemment très très légère
*
* @param string $url
* URL à analyser
* @return string|0
* Retourne son type (rss|atom|rdf) ou 0 si pas feed
*/
function is_feed($url)
{
/**
* méthode SPIP
*/
if (function_exists('recuperer_page')) {
$buffer = recuperer_page($url);
if (preg_match("/<(\\w*) .*/", $buffer, $matches)) {
//ici on detecte la premiere balise
$type_feed = $matches[1];
switch ($type_feed) {
case "rss":
return "rss";
case "feed":
return "atom";
case "rdf":
return "rdf";
}
}
return '';
}
$fp = @fopen($url, "r");
if (!$fp) {
return 0;
}
//verifion la nature de ce fichier
while (!feof($fp)) {
$buffer = fgets($fp, 4096);
if (preg_match("/<(\\w*) .*/", $buffer, $matches)) {
//ici on detecte la premiere balise
$type_feed = $matches[1];
switch ($type_feed) {
case "rss":
fclose($fp);
return "rss";
case "feed":
fclose($fp);
return "atom";
case "rdf":
fclose($fp);
return "rdf";
default:
fclose($fp);
return 0;
}
}
}
}
示例14: accesrestreint_gerer_htaccess
/**
* on essaye de poser un htaccess rewrite global sur IMG/
* si fonctionne on gardera des ulrs de document permanente
* si ne fonctionne pas on se rabat sur creer_htaccess du core
* qui pose un deny sur chaque sous repertoire de IMG/
*
* http://doc.spip.org/@gerer_htaccess
*
* @param bool $active
* @return bool
*/
function accesrestreint_gerer_htaccess($active = true)
{
if (!$active) {
spip_unlink(_DIR_IMG . _ACCESS_FILE_NAME);
effacer_meta("creer_htaccess");
// effacer les xx/.htaccess crees eventuellement par le core
include_spip("inc/acces");
gerer_htaccess();
return false;
} else {
$rewrite = <<<rewrite
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(\\d+/[\\da-f]+)\$
RewriteRule ^\\w+/.*\$ ../spip.php?action=api_docrestreint&arg=%1/\$0 [skip=100]
RewriteRule ^\\w+/.*\$ ../spip.php?action=api_docrestreint&arg=0/0/\$0 [skip=100]
rewrite;
// On cherche si le dossier racine a un RewriteBase plus long que "/"
if (file_exists(_DIR_RACINE . _ACCESS_FILE_NAME)) {
$ht = '';
lire_fichier(_DIR_RACINE . _ACCESS_FILE_NAME, $ht);
if ($ht and preg_match('|^RewriteBase\\s+/.+$|m', $ht, $rewritebase)) {
$rewritebase = rtrim(trim($rewritebase[0]), '/') . '/' . _NOM_PERMANENTS_ACCESSIBLES;
$rewrite = $rewritebase . "\n" . $rewrite;
}
}
ecrire_fichier(_DIR_IMG . _ACCESS_FILE_NAME, $rewrite);
// verifier sur l'url de test
include_spip('inc/distant');
$url_test = url_absolue(_DIR_IMG . "test/.test?0/1");
$test = recuperer_page($url_test);
// si l'url de test renvoie bien "OK" alors rewrite rule fonctionne et on peut baser la protection de document sur ce shema
if ($test == "OK") {
effacer_meta("creer_htaccess");
// securite, et permet de generer des urls permanentes
} else {
// sinon on se rabat sur un deny et on generera des urls moches
spip_unlink(_DIR_IMG . _ACCESS_FILE_NAME);
ecrire_meta("creer_htaccess", "oui");
}
// dans tous les cas on passe par gerer_htaccess pour enlever ou mettre les .htaccess dans les sous rep
include_spip("inc/acces");
gerer_htaccess();
return true;
}
}
示例15: teleporter_http_recuperer_source
/**
* Récupérer la source et détecter son extension
*
* @uses teleporter_http_extension()
*
* @param string $source
* URL de la source HTTP
* @param string $dest_tmp
* Répertoire de destination
* @return array|string
* - Texte d'erreur si une erreur survient,
* - Liste sinon (répertoire de destination temporaire, extension du fichier source)
*/
function teleporter_http_recuperer_source($source, $dest_tmp)
{
# securite : ici on repart toujours d'une source neuve
if (file_exists($dest_tmp)) {
spip_unlink($dest_tmp);
}
$extension = "";
# si on ne dispose pas encore du fichier
# verifier que le zip en est bien un (sans se fier a son extension)
# en chargeant son entete car l'url initiale peut etre une simple
# redirection et ne pas comporter d'extension .zip
include_spip('inc/distant');
$head = recuperer_page($source, false, true, 0);
if (preg_match(",^Content-Type:\\s*?(.*)\$,Uims", $head, $m) and include_spip('base/typedoc')) {
$mime = $m[1];
// passer du mime a l'extension !
if ($e = array_search($mime, $GLOBALS['tables_mime'])) {
$extension = $e;
}
}
if (!$extension or in_array($extension, array('bin', 'gz'))) {
if (preg_match(",^Content-Disposition:\\s*attachment;\\s*filename=(.*)['\"]?\$,Uims", $head, $m) and $e = teleporter_http_extension($m[1])) {
$extension = $e;
} else {
$extension = teleporter_http_extension($source);
}
}
# format de fichier inconnu
if (!$extension) {
spip_log("Type de fichier inconnu pour la source {$source}", "teleport" . _LOG_ERREUR);
return _T('svp:erreur_teleporter_type_fichier_inconnu', array('source' => $source));
}
$dest_tmp = preg_replace(";\\.[\\w]{2,3}\$;i", "", $dest_tmp) . ".{$extension}";
if (!defined('_SVP_PAQUET_MAX_SIZE')) {
define('_SVP_PAQUET_MAX_SIZE', 67108864);
}
// 64Mo
include_spip('inc/distant');
$dest_tmp = copie_locale($source, 'force', $dest_tmp, _SVP_PAQUET_MAX_SIZE);
if (!$dest_tmp or !file_exists($dest_tmp = _DIR_RACINE . $dest_tmp)) {
spip_log("Chargement impossible de la source {$source}", "teleport" . _LOG_ERREUR);
return _T('svp:erreur_teleporter_chargement_source_impossible', array('source' => $source));
}
return array($dest_tmp, $extension);
}