Je vous présente un petit script (pour l'instant en version béta), qui va permettre d'améliorer la beauté de votre repository.
C'est l'idéal pour faire un site de ressource très simple.
Features :
- Cré le menu a partir des dossiers présentes dans le repertoire courant
- Fonction download et view details
- Force le dl des fichiers autre que txt, php, perl, html, htm...
- Tiens sur une seul page
je suis a la recherche d'éventuelles failles de sécurité ou bugs, si vous en trouvez, merci de me contacter par mp. Je vous en serai très reconnaissant
Fonctions prochainement incorporées : Colorateur syntaxique, plus de détails, meilleurs style.
Démo online : http://pc-master.net/repo
Code source :
Code : Tout sélectionner
<?php
//Fonction dl
function forcerTelechargement($nom, $situation, $poids)
{
header('Content-Type: application/octet-stream');
header('Content-Length: '. $poids);
header('Content-disposition: attachment; filename="'.$nom.'"');
header('Pragma: no-cache');
header('Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0');
header('Expires: 0');
readfile($situation);
exit();
}
//pour éviter des bug de la fonction date
date_default_timezone_set("Europe/Paris");
//On regarde si le dossier demandé est bien dans le repertoire courant
$dir = $_GET['d'];
$is_in = false;
$handle = opendir(getcwd());
while (false !== ($file = readdir($handle))) {
if(substr(strrchr($file, '.') ,1)) {
} else {
if($file != ".." && $file !="."){
if($file == $dir){
$is_in = true;
}
}
}
}
closedir($handle);
//Si le dossier est bien dans le repertoire courant :
if($is_in){
//On regarde s'il veux voir un fichier
if(isset($_GET['s'])){
//Si le fichier existe bien
if(file_exists($_GET['d'].'/'.urldecode($_GET['s']))){
//On force le téléchargement
//Si c'est un code, on l'affiche direct dans le browser
$extension=strrchr($_GET['s'],'.');
$extension=substr($extension,1);
$ext = array("php", "html", "txt", "htm");
if(in_array($extension, $ext)){
echo '<script type="text/javascript">window.open("'.$_GET['d'].'/'.urldecode($_GET['s']).'");</script>';
}else{
$Fichier_a_telecharger = $_GET['d'].'/'.urldecode($_GET['s']);
forcerTelechargement(urldecode($_GET['s']), './'.$_GET['d'].'/'.urldecode($_GET['s']), filesize($Fichier_a_telecharger));
}
}
}
}
?>
<html>
<head>
<style type="text/css">
body{
background: black;
color: white;
}
#conteneur{
margin: auto;
width: 800px;
border: 1px solid green;
}
pre{
color: green;
}
hr{
color: green;
}
li{
list-style: none;
display : inline;
padding : 0 0.5em;
}
a{
text-decoration: none;
color: green;
}
</style>
</head>
<body>
<!-- Div principale (pas de super design a base d'header ^^ ) -->
<div id="conteneur">
<center>
<pre>
ad88888ba 88 88b d88 ad88888ba
d8" "8b 88 888b d888 d8" "8b
Y8, 88 88`8b d8'88 Y8,
`Y8aaaaa, 88,dPPYba, ,adPPYYba, 8b,dPPYba, ,adPPYba, 88 `8b d8' 88 `Y8aaaaa,
`"""""8b, 88P' "8a "" `Y8 88P' "Y8 a8P_____88 88 `8b d8' 88 `"""""8b,
`8b 88 88 ,adPPPPP88 88 8PP""""""" 88 `8b d8' 88 `8b
Y8a a8P 88 88 88, ,88 88 "8b, ,aa 88 `888' 88 Y8a a8P
"Y88888P" 88 88 `"8bbdP"Y8 88 `"Ybbd8"' 88 `8' 88 "Y88888P"
</pre>
</center>
<hr />
<!-- Le menu -->
<center>
<?php
$handle = opendir(getcwd());
// On initialise les variables.
$dossiers = '';
while (false !== ($file = readdir($handle))) {
if(substr(strrchr($file, '.') ,1)) {
} else {
if($file != ".." && $file !="."){
$dossiers .= '<li id="'.$file.'"><a href="?d='.$file.'">'.$file.'</a></li>';
}
}
}
echo $dossiers;
closedir($handle);
?>
</center>
<hr />
<!-- Page d'accueil par défault -->
<?php
if(!isset($_GET['d'])){
?>
<center><h1>Accueil</h1></center>
<br />
<br />
<p>Bienvenue sur mon site de partage, ici vous retrouverez pleins de ressources. J'espères qu'elles vous plairons :)
<br />
Vous pouvez vous déplacer dans les cathégories grâce au menu. Pour télécharger les fichiers, cliquez simplement dessus.
</p>
<!-- Fin page d'accueil par défault -->
<?php
}else{
//-----------------------------------
if($is_in){
$handle = opendir('./'.$_GET['d']);
$fichiers = '';
echo '<br /><br />
<table border="1" width="100%">
<tr>
<td><center>Action</center></td>
<td><center>Name</center></td>
</tr>';
while (false !== ($file = readdir($handle))) {
if(substr(strrchr($file, '.') ,1)) {
$extension = substr(strrchr($file, '.') ,1);
$fichiers .= '<tr><td><a href="?d='.$_GET['d'].'&s='.urlencode($file).'">Download</a> -
<a href="javascript:alert(\'Nom du fichier : '.$file.'\nTaille : '.filesize($_GET['d'].'/'.$file).'\n Date : '.date('d/m/Y', filemtime($_GET['d'].'/'.$file)).' \');">Details</a></td>
<td><a href="?d='.$_GET['d'].'&s='.urlencode($file).'">'.htmlentities($file).'</a></td></tr>';
}
}
echo $fichiers;
echo '</table>';
closedir($handle);
}else{
echo'<br /><p> Vous ne pouvez ouvrir que les dossier présents dans le repertoire courant ;)</p>';
}
}
?>
</div>
</body>
</html>
oubliez pas que c'est une version béta, donc plus du bricolage qu'autre chose ^^
Toute remarque est la beinvenue