[ Index ]
 

Code source de SPIP 1.8.3

Accédez au Source d'autres logiciels libres | Soutenez Angelica Josefina !

title

Body

[fermer]

/ -> spip_acces_doc.php3 (source)

   1  <?php
   2  
   3  /***************************************************************************\
   4   *  SPIP, Systeme de publication pour l'internet                           *
   5   *                                                                         *
   6   *  Copyright (c) 2001-2005                                                *
   7   *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
   8   *                                                                         *
   9   *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
  10   *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
  11  \***************************************************************************/
  12  
  13  # script d'acces aux documents joints
  14  # doit etre appele avec un de ces 2 parametres de GET:
  15  # - id_document 
  16  # - file 
  17  # il verifie soit que le demandeur est authentifie
  18  # soit que le fichier est joint à au moins 1 article, breve ou rubrique
  19  
  20  $id_document = intval($_GET['id_document']);
  21  $file = urldecode($_GET['file']);
  22  if (strpos($file,'../') !== false)
  23    $refus = 1;
  24  else
  25    {
  26      $refus = false;
  27      include  ("ecrire/inc_version.php3");
  28      include_local(_FILE_CONNECT);
  29      include_ecrire ("inc_meta.php3");
  30      include_ecrire ("inc_session.php3");
  31  
  32      global $auteur_session;
  33      if ($cookie_session = $_COOKIE['spip_session']) 
  34        {
  35      if (verifier_session($cookie_session)) 
  36        {
  37          if ($auteur_session['statut'] == '0minirezo' 
  38          OR $auteur_session['statut'] == '1comite') 
  39            $auth_login = $auteur_session['login'];
  40        }
  41        }
  42  
  43      if (!$id_document) {
  44        $id_document = @spip_fetch_array(spip_query("select id_document from spip_documents as documents where documents.fichier='".addslashes($file)."'"));
  45        if (!$id_document) $refus = 2;
  46        $id_document = $id_document['id_document'];
  47      } else {
  48        $file = @spip_fetch_array(spip_query("select fichier from spip_documents as documents where id_document='". $id_document ."'"));
  49        if (!$file) $refus = 3;
  50        $file = $file['fichier'];
  51      }
  52    }
  53  
  54  if (!$auth_login && !$refus) { 
  55      if (!spip_num_rows(spip_query("select articles.id_article
  56  from spip_documents_articles as rel_articles, spip_articles as articles 
  57  where rel_articles.id_article = articles.id_article AND
  58  articles.statut = 'publie' AND rel_articles.id_document ='".
  59                     $id_document .
  60                  "' LIMIT 1"))) {
  61        if (!spip_num_rows(spip_query("select rubriques.id_rubrique
  62  from spip_documents_rubriques as rel_rubriques, spip_rubriques as rubriques 
  63  where rel_rubriques.id_rubrique = rubriques.id_rubrique AND
  64  rubriques.statut = 'publie' AND rel_rubriques.id_document ='".
  65                     $id_document .
  66                    "' LIMIT 1"))) {
  67      if (!spip_num_rows(spip_query("select breves.id_breve
  68  from spip_documents_breves as rel_breves, spip_breves as breves 
  69  where rel_breves.id_breve = breves.id_breve AND
  70  breves.statut = 'publie' AND rel_breves.id_document ='".
  71                     $id_document .
  72                    "' LIMIT 1")))
  73        $refus = 4; } } }
  74  
  75  if (!$refus)
  76    {
  77       header("Content-Type: ". mime_content_type($file));
  78       header("Content-Length: ". filesize($file));
  79       header("Content-Disposition: attachment; filename=\"". basename($file) ."\";");
  80       header("Content-Transfer-Encoding: binary");
  81       readfile($file);
  82     }
  83   else
  84     spip_log("Acces refuse ($refus) au document " . ($_GET['id_document']) . ': ' .($_GET['file']));
  85  
  86  ?>


Généré le : Thu Feb 22 22:27:47 2007 par Balluche grâce à PHPXref 0.7