Script repository
Posté : 27 nov. 2010 13:09
Bonjour à tous !
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 :
oubliez pas que c'est une version béta, donc plus du bricolage qu'autre chose ^^
Toute remarque est la beinvenue
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