begin process at 2012 05 29 01:44:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Un explorateur PHP


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Un explorateur PHP

jeudi 26 janvier 2012 à 14:53:54 | Un explorateur PHP

marcdu77114

Bonjour à tous !

Déjà, je m'excuse de poster ça ici, je ne savais pas ou le mettre, et comme je suis un débutant ...
Pour la petite histoire -dont tout le monde se fout- je suis depuis deux semaines au HTML , PHP, CSS et javascript. En général , j'apprends vite et par moi même, et le fait que je connaisse déjà le C++ aide.

Aujourd'hui j'ai un problème avec un explorateur de fichier. C'est un projet que je fais genre mini tp : améliorer un peu cela : http://www.phpsources.org/scripts61-PHP.htm qui est lui même une amélioration de celui ci, mais sans que ça soit précisé. http://cyberzoide.developpez.com/php4/file/
Le but est de créer une possibilité d'upload (pas encore fait), de suppression de fichier (non plus ^^) et de download (ne marche pas, et c'est mon problème à l'heure actuelle).

Vous allez me dire : "rien ne marche quoi ?" Je réponds : je ne suis là dessus que depuis hier matin, et il y avait pas mal d'erreurs de variables non déclarées et de compatibilité du code (il est assez vieux et certaines fonctions avait été dépréciées).

J'en viens donc au download : vous remarquerez que ça n'est pas prévu à la base dans le tp. j'ai seulement affiché le nom du fichier en lien, pour que ça marche.
Et effectivement, ça marche : je m'explique, mais vous allez avoir du mal à comprendre.
Le fichier php que j'appelle test3.php est dans un dossier nommé "Explorateur".
Dans ce même dossier, il y a un répertoire pour les images, un pour le css et le javascript. (vous pouvez avoir ces fichiers à http://www.phpsources.org/scripts61-PHP.htm ).
Dans le dossier Explorateur, j'ai créé un dossier, que je voulais explorer : DOSSIER-A-OUVRIR. J'ai colé dedans une partie de mon répertoire musical (en l'occurence les dossier Artistes en A et Artistes en B ainsi que leur contenu).
L'explorateur va au delà de mes espérances, puisqu'on peut ouvrir les dossiers Artistes en A et artistes en B ainsi que leurs sous dossiers (Nom d'artiste) dans l'arborescence, et voir le fichiers contenus (principalement du mp3), sous forme de LIEN dans la partie de droite. Le problème, c'est que quand je clique sur un lien : j'ai le droit à un joli : "The requested URL /Explorateur/Dis Moi.mp3 was not found on this server."
Autrement dis, si je met mes musiques dans le dossier "Explorateur" et à leur place, dans les dossiers, ça marche très bien, mais si je fais ça, je vais devoir mettre le double de musique.
Ce qui ne vas pas est que le lien "pointe" vers Explorateur/nom_du_fichier.extension_du_fichier,
alors qu'il faudrait qu'il pointe vers
Explorateur/DOSSIER-A-OUVRIR/....chemin vers le fichier.../nom_du_fichier.extension_du_fichier

alors voilà, je vous met mon fichier source, je vous indique la ligne ou il a le lien vers le fichier, et j'attend plus qu'avec hate votre réponse.

Code PHP :
<?php
/******************************************************************************/
/*                                                                            */
/*                       __        ____                                       */
/*                 ___  / /  ___  / __/__  __ _____________ ___               */
/*                / _ \/ _ \/ _ \_\ \/ _ \/ // / __/ __/ -_|_-<               */
/*               / .__/_//_/ .__/___/\___/\_,_/_/  \__/\__/___/               */
/*              /_/       /_/                                                 */
/*                                                                            */
/*                                                                            */
/******************************************************************************/
/*                                                                            */
/* Titre          : Liste répertoires et sous-répertoires                     */
/*                                                                            */
/* URL            : http://www.phpsources.org/scripts61-PHP.htm               */
/* Auteur         : Mathieu                                                   */
/* Date édition   : 01 Sept 2004                                              */
/*                                                                            */
/******************************************************************************/
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 

<html> 

<head> 

<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> 

<style type="text/css"> 
* {font-size: 14pt;}
a:link, a:hover, a:active, a:visited {color: #0000FF;}
</style> 
</head> 

<body> 

<?php 
$order = isset($_GET['order']) ? $_GET['order'] : '';
$order0 = isset($_GET['order0']) ? $_GET['order0'] : '';
$dir = isset($_GET['dir']) ? $_GET['dir'] : '';
$asc = isset($_GET['asc']) ? $_GET['asc'] : '';


//définir ou est le dossier racine
$BASE = 'DOSSIER-A-OUVRIR';


/* infos à extraire */ 
function addScheme($entry,$base,$type) 
{
	$tab['name'] = $entry;
	$tab['type'] = filetype($base.'/'.$entry);
	$tab['date'] = filemtime($base.'/'.$entry);
	$tab['size'] = filesize($base.'/'.$entry);
	$tab['perms'] = fileperms($base.'/'.$entry);
	$tab['access'] = fileatime($base.'/'.$entry);
	$t = explode('.', $entry);
	$tab['ext'] = $t[count($t)-1];
	return $tab;
}


/* liste des dossiers */ 
function list_dir($base, $cur, $level=0) 
{
	global $BASE, $order, $asc;
	if ($dir = opendir($base)) 
	{
		$tab = array();
		while($entry = readdir($dir)) 
		{
			if(is_dir($base.'/'.$entry) && !in_array($entry, array('.','..'))) 
			{
				$tab[] = addScheme($entry, $base, 'dir');
			}
		}
		/* tri */ 
		usort($tab,'cmp_name');
		
		foreach($tab as $elem) 
		{
		$entry = $elem['name'];
		/* chemin relatif à la racine */ 
		$file = $base.'/'.$entry;
		if(is_dir($file) && !in_array($entry, array(".",".."))) 
			{
				for($i=1;$i<=(4*$level);$i++) /* marge gauche */
				  {
					echo "&nbsp;";
				  }
				  
				  /* l'entrée est-elle le dossier courant */ 
				if($file == $cur) 
					{echo "<img src=\"images/dir-open.gif\" /> $entry<br />\n";}
				else 
					{echo "<img src=\"images/dir-close.gif\" /> <a href=\"$_SERVER[PHP_SELF]?dir=".rawurlencode($file)."&order=$order&asc=$asc\">$entry</a><br />\n";}

				/* l'entrée est-elle dans la branche dont le dossier courant est la feuille */ 
				if(mb_ereg($file.'/',$cur.'/')) 
					{list_dir($file, $cur, $level+1);}
			}
		}
	closedir($dir);
	}
}


/* liste des fichiers */ 
function list_file($cur) 
{
	global $order, $asc, $order0;
	if ($dir = opendir($cur)) 
	{
		/* tableaux */ 
		$tab_dir = array();
		$tab_file = array();
		
		/* extraction */ 
		while($file = readdir($dir)) 
		{
			if(is_dir($cur.'/'.$file)) 
			{
				if(!in_array($file, array('.','..'))) 
				{
					$tab_dir[] = addScheme($file, $cur, 'dir');
				}
			}else 
			{
				$tab_file[] = addScheme($file, $cur, 'file');
			}
		}
		
		/* tri */ 
		usort($tab_dir,'cmp_'.$order);
		usort($tab_file,'cmp_'.$order);
		
		/* affichage */ 
		echo '<table width = 100% heigh = 100% cellspacing="2" cellpadding="2" border="0">';//déclaration de la talbe
		echo '<tr style="font-size:8pt;font-family:arial;">

		<th>'.(($order=='name')?(($asc=='a')?'/\\ ':'\\/ '):'').
		"<a href=\"$_SERVER[PHP_SELF]?dir=".rawurlencode($cur).
		"&order=name&asc=$asc&order0=$order\">Nom</a></th><td> </td> 

		<th>".(($order=='size')?(($asc=='a')?'/\\ ':'\\/ '):'').

		"<a href=\"$_SERVER[PHP_SELF]?dir=".rawurlencode($cur).
		"&order=size&asc=$asc&order0=$order\">Taille</a></th><td> </td> 

		<th>".(($order=='date')?(($asc=='a')?'/\\ ':'\\/ '):'').

		"<a href=\"$_SERVER[PHP_SELF]?dir=".rawurlencode($cur).
		"&order=date&asc=$asc&order0=$order\">Dernière modification</a></th><td>" .
		" </td> 

		<th>".(($order=='type')?(($asc=='a')?'/\\ ':'\\/ '):'').

		"<a href=\"$_SERVER[PHP_SELF]?dir=".rawurlencode($cur).
		"&order=type&asc=$asc&order0=$order\">Type</a></th><td> </td> 

		<th>".(($order=='ext')?(($asc=='a')?'/\\ ':'\\/ '):'').

		"<a href=\"$_SERVER[PHP_SELF]?dir=".rawurlencode($cur).
		"&order=ext&asc=$asc&order0=$order\">Extention</a></th><td> </td> 

		<th>".(($order=='perms')?(($asc=='a')?'/\\ ':'\\/ '):'').

		"<a href=\"$_SERVER[PHP_SELF]?dir=".rawurlencode($cur).
		"&order=perms&asc=$asc&order0=$order\">Permissions</a></th><td> </td> 

		<th>".(($order=='access')?(($asc=='a')?'/\\ ':'\\/ '):'').

		"<a href=\"$_SERVER[PHP_SELF]?dir=".rawurlencode($cur).
		"&order=access&asc=$asc&order0=$order\">Dernier accès</a></th></tr>";
		foreach($tab_dir as $elem) 
		{//affichage des détails pour les dossiers
			echo 
				'<tr>

					<td><img src="images/dir-close.gif" /> '.$elem['name'].'</td>
					<td></td> 
					<td></td> 
					<td></td> 
					<td>'.date("d/m/Y H:i:s", $elem['date']).'</td>
					<td> </td> 
					<td>'.assocType($elem['type']).'</td>
					<td></td> 
					<td></td>
					<td></td> 
					<td>'.$elem['perms'].'</td>
					<td></td> 
					<td>'.date("d/m/Y", $elem['access']).'</td>
				</tr>';

					
		}
		foreach($tab_file as $elem) 
		{//affichage des détails pour les fichiers, le lien est dans le premier <td>
			echo 
				'<tr>

					<td><img src="images/file-none.gif" /><a href="'.$elem['name'].'">'.$elem['name'].'</a></td> 
					<td></td> 
					<td align="right">'.formatSize($elem['size']).'</td>
					<td></td> 
					<td>'.date("d/m/Y H:i:s", $elem['date']).'</td>
					<td></td> 
					<td>'.assocType($elem['type']).'</td>
					<td></td> 
					<td>'.assocExt($elem['ext']).'</td>
					<td></td> 
					<td>'.$elem['perms'].'</td>
					<td></td> 
					<td>'.date("d/m/Y", $elem['access']).'</td>
				</tr>';

		}
		echo "</table>";
		closedir($dir);
	}//fin de if
}//fin de fonciton


/* formatage de la taille */ 
function formatSize($s) 
{
	/* unités */ 
	$u = array('octets','Ko','Mo','Go','To');
	
	/* initialisation du compteur de passages dans la boucle */ 
	$i = 0;
	
	/* initialisation du nombre à afficher */ 
	$m = 0;
	
	/* division par 1024 */ 
	while($s >= 1) 
	{
		$m = $s;
		$s /= 1024;
		$i++;
	}
	if(!$i) 
		{$i=1;}
	
	$d = explode('.',$m);
	
	/* s'il y a des décimales */ 
	if($d != $m) 
	{
		$m = number_format($m, 2, ',', ' ');
	}
	return $m.' '.$u[$i-1];
}


/* formatage du type */ 
function assocType($type) 
{
  /* tableau de conversion */ 
  $t = array( 
			'fifo' => 'file', 
			'char' => 'fichier spécial en mode caractère', 
			'dir' => 'dossier', 
			'block' => 'fichier spécial en mode bloc', 
			'link' => 'lien symbolique', 
			'file' => 'fichier', 
			'unknown' => 'inconnu' 
			);
  return $t[$type];
}


/* description de l'extention */ 
function assocExt($ext) 
{
	$e = array( 
			'' => "inconnu", 
			'doc' => "Microsoft Word", 
			'xls' => "Microsoft Excel", 
			'ppt' => "Microsoft Power Point", 
			'pdf' => "Adobe Acrobat", 
			'zip' => "Archive WinZip", 
			'txt' => "Document texte", 
			'gif' => "Image GIF", 
			'jpg' => "Image JPEG", 
			'png' => "Image PNG", 
			'php' => "Script PHP", 
			'php3' => "Script PHP", 
			'htm' => "Page web", 
			'html' => "Page web", 
			'css' => "Feuille de style", 
			'js' => "JavaScript",
			'avi'=>"Film en AVI"
				);
	if(in_array($ext, array_keys($e))) 
	{
		return $e[$ext];
	}
	else 
	{
		return $e[''];
	}
}


function cmp_name($a,$b) 
{
    global $asc;
    if ($a['name'] == $b['name']) 
		{return ;}
    if($asc == 'a') 
	{
        return ($a['name'] < $b['name']) ? -1 : 1;
    }
	else 
	{
        return ($a['name'] > $b['name']) ? -1 : 1;
    }
}


function cmp_size($a,$b) {
    global $asc;
    if ($a['size'] == $b['size']) 
		{return cmp_name($a,$b);}
    if($asc == 'a') 
	{
        return ($a['size'] < $b['size']) ? -1 : 1;
    }
	else 
	{
        return ($a['size'] > $b['size']) ? -1 : 1;
    }
}

function cmp_date($a,$b) {
    global $asc;
    if ($a['date'] == $b['date']) 
		{return cmp_name($a,$b);}
    if($asc == 'a') 
	{
        return ($a['date'] < $b['date']) ? -1 : 1;
    }
	else 
	{
        return ($a['date'] > $b['date']) ? -1 : 1;
    }
}



function cmp_access($a,$b) {
    global $asc;
    if ($a['access'] == $b['access']) 
		{return cmp_name($a,$b);}
    if($asc == 'a') 
	{
        return ($a['access'] < $b['access']) ? -1 : 1;
    }
	else 
	{
        return ($a['access'] > $b['access']) ? -1 : 1;
    }
}



function cmp_perms($a,$b) 
{
    global $asc;
    if ($a['perms'] == $b['perms']) 
	{return cmp_name($a,$b);}
    if($asc == 'a') 
	{
        return ($a['perms'] < $b['perms']) ? -1 : 1;
    }
	else 
	{
        return ($a['perms'] > $b['perms']) ? -1 : 1;
    }
}




function cmp_type($a,$b) 
{
    global $asc;
    if ($a['type'] == $b['type']) 
		{return cmp_name($a,$b);}
    if($asc == 'a') 
	{
        return ($a['type'] < $b['type']) ? -1 : 1;
    }
	else 
	{
        return ($a['type'] > $b['type']) ? -1 : 1;
    }
}



function cmp_ext($a,$b) 
{
    global $asc;
    if ($a['ext'] == $b['ext']) 
		{return cmp_name($a,$b);}
    if($asc == 'a') 
	{
        return ($a['ext'] < $b['ext']) ? -1 : 1;
    }
	else 
	{
        return ($a['ext'] > $b['ext']) ? -1 : 1;
    }
}
?> 


<!-- ET SIIIIII !!!! IL Y A QUAND MEME DU VRAI HTML DANS CETTE PAGE --> 

<table border="1" cellspacing="0" cellpadding="10" bordercolor="gray"> 
	<tr valign="top">
		<td> 

<!-- ET OUIIIIIII !!!! C'EST TOUT POUR CETTE PAGE ^^ --> 

<!-- liste des répertoires 
et des sous-répertoires --> 
<?php 
	if(!in_array($order, array('name','date','size','perms','ext','access','type')))
	{
		$order = 'name';
	}
	if(($order == $order0) && ($asc != 'b')) 
	{
	  $asc = 'b';
	}
	else 
	{
	  $asc = 'a';
	}
	/* lien sur la racine */ 
	if(!$dir) 
	{
	  echo "<img src=\"images/dir-open.gif\" /> /<br /><br />\n";
	}
	else 
	{
	  echo "<img src=\"images/dir-close.gif\" /> <a href=\"$_SERVER[PHP_SELF]\">/</a><br/>\n";
	}
	list_dir($BASE, rawurldecode($dir), 1); 
?> 


		</td>
		<td> 


<!-- liste des fichiers --> 
<?php 

	/* répertoire initial à lister */ 
	if(!$dir) 
	{
	  $dir = $BASE;
	}  
	list_file(rawurldecode($dir)); 
?> 


		</td>
	</tr> 
</table> 
</body>
jeudi 26 janvier 2012 à 15:04:48 | Re : Un explorateur PHP

marcdu77114

Je me rend compte qu'en fait , ma question est juste : comment, dans mon cas, afficher le chemin entre le dossier Explorateur et le fichier.

Enfin je sais pas si ça s'appelle un chemin quand on est sur internet, mais bon ... c'est pas plutot une histoire de lien relatif ou absolu ? j'ai lu ça quelque part je vais retourner lire.M

Mais nulle part ils me diront comment faire évoluer ce lien, c'est pour ça que je me tourne vers vous.

Merci d'avance de votre précieuse aide
jeudi 26 janvier 2012 à 21:48:24 | Re : Un explorateur PHP


Cette discussion est classée dans : file, return, asc, cmp, if


Répondre à ce message

Sujets en rapport avec ce message

Code PHP fonctionne pas. [ par charrier63 ] Bonjour a tous, j'essai desperement de copier un code php ou recuperer un code php tout fait dans les zip du site. Le code php recherché, est dans le Modification de script. [ par cemp ] Bonjour à tous, je suis un grand débutant en php.J'ai récupéré plusieurs script ici et ailleurs. Seulement, j'aimerai en combiné deux pour n'en faire lier une image a un utilisateur [ par msi079 ] salut . j'ai une table users .et je veux que chaques users puisse enregistrer son image (phpto) a lui . voici mon code qui marche pas . je veux bien Comment récupérer sur le serveur un fichier image uploadé par un utilisateur ? [ par pjcleder ] PAT Bonjour, Mon hébergeur a déclaré /tmp comme répertoire upload_tmp_dir. D' après mon script, le fichier image est bien envoyé mais je ne vois pas c Problème avec code d'upload [ par Koppa ] Bonjour je crée présentement un site avec une possibilté de partager des fichiers mais voilà je n'arrive pas à faire fonctionné un des codes: upload.p probleme de formulaire && BASE DE DONNée [ par joooooker ] salut!!je ne peux pas trouver l'erreur ou? alors...fichier inscription Inscription function easyphp server [ par domi81 ] Bonjour,J'ai installé easyphp 3.0Je voudrais renseigné une base de données avec un formulaire mais ce message d'erreur apparait : Objet non trouvé!L'U Ciblé les liens afficher dans un forum phpbb [ par bensahurs ] Bonjour, Je m'explique je voudrais que les liens afficher dans le contenu des messages de mon forum phpbb soit ciblé pour afficher la taille du fichi Mettre en couleur du texte sur une page PHP. [ par Leo_Robotic_Passion ] Bonjours a tous ^^ Je viens solliciter votre aide pour une petite modification sur un plugin dotclear! J'aimerais mettre en couleur un texte sur une upload [ par nbpro ] salu j'ai un problème avec se code j'aimerai savoir comment faire en sorte qu'il renomme pas les fichier une foi le fichier upload header("Expires:


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,388 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales