Blame | Last modification | View Log | RSS feed
<?php/***************************************************************************\* SPIP, Systeme de publication pour l'internet ** ** Copyright (c) 2001-2005 ** Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James ** ** Ce programme est un logiciel libre distribue sous licence GNU/GPL. ** Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *\***************************************************************************/# script d'acces aux documents joints# doit etre appele avec un de ces 2 parametres de GET:# - id_document# - file# il verifie soit que le demandeur est authentifie# soit que le fichier est joint à au moins 1 article, breve ou rubrique$id_document = ($_GET['id_document']);$file = urldecode($_GET['file']);if (strpos($file,'../') !== false)$refus = 1;else{$refus = false;include ("ecrire/inc_version.php3");include_local(_FILE_CONNECT);include_ecrire("inc_meta.php3");include_ecrire("inc_session.php3");global $auteur_session;if ($cookie_session = $_COOKIE['spip_session']){if (verifier_session($cookie_session)){if ($auteur_session['statut'] == '0minirezo'OR $auteur_session['statut'] == '1comite')$auth_login = $auteur_session['login'];}}if (!$id_document) {$id_document = @spip_fetch_array(spip_query("select id_document from spip_documents as documents where documents.fichier='".$file."'"));if (!$id_document) $refus = 2;$id_document = $id_document['id_document'];} else {$file = @spip_fetch_array(spip_query("select fichier from spip_documents as documents where id_document='". $id_document ."'"));if (!$file) $refus = 3;$file = $file['fichier'];}}if (!$auth_login && !$refus) {if (!spip_num_rows(spip_query("select articles.id_articlefrom spip_documents_articles as rel_articles, spip_articles as articleswhere rel_articles.id_article = articles.id_article ANDarticles.statut = 'publie' AND rel_articles.id_document ='".$id_document ."' LIMIT 1"))) {if (!spip_num_rows(spip_query("select rubriques.id_rubriquefrom spip_documents_rubriques as rel_rubriques, spip_rubriques as rubriqueswhere rel_rubriques.id_rubrique = rubriques.id_rubrique ANDrubriques.statut = 'publie' AND rel_rubriques.id_document ='".$id_document ."' LIMIT 1"))) {if (!spip_num_rows(spip_query("select breves.id_brevefrom spip_documents_breves as rel_breves, spip_breves as breveswhere rel_breves.id_breve = breves.id_breve ANDbreves.statut = 'publie' AND rel_breves.id_document ='".$id_document ."' LIMIT 1")))$refus = 4; } } }if (!$refus){header("Content-Type: ". mime_content_type($file));header("Content-Length: ". filesize($file));header("Content-Disposition: attachment; filename=\"". basename($file) ."\";");header("Content-Transfer-Encoding: binary");readfile($file);}elsespip_log("Acces refuse ($refus) au document " . ($_GET['id_document']) . ': ' .($_GET['file']));?>