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