Appliquer des fonctions à des fichiers php
Posté : 26 juin 2007, 13:40
Bonjour, voilà j'explique mon problème et là où je suis bloqué.
En fait, j'ai un script qui me permet d'afficher une arborescence dans le répertoire dans lequel nous nous trouvons. Ce script permet également de naviguer dans cette arborescence un peu de la même manière que windows.
voici le code pour ceci :
Pour ça, j'ai créé un script qui permet de le faire, voici le code :
Pouvez-vous m'aider ?
En fait, j'ai un script qui me permet d'afficher une arborescence dans le répertoire dans lequel nous nous trouvons. Ce script permet également de naviguer dans cette arborescence un peu de la même manière que windows.
voici le code pour ceci :
<?
//fichier qui permet la connexion au serveur et l'accès aux fonctions
include('../includes/config.php');
//fichier de langue
require ('../includes/language/french/explorer.php');
//début langage html
include ('../includes/header.php');
//on vérifie que l'utilisateur s'est bien identifié
//s'il s'agit d'un administrateur admin ou sadmin ou reader
if ((isset($_SESSION['admin'])) or (isset($_SESSION['sadmin'])) or (isset($_SESSION['reader'])))
{
?>
<!--script explorer.php-->
<head>
<script LANGUAGE="JavaScript">
parametres="toolbar=0,location=0,directories=0,menuBar=0,scrollbars=1,width=700,height=600,left=150,top=50";
function OuvrirFenetre(lien) {
f=window.open(lien,"fenetre",parametres);
f.focus();
}
</script>
</head>
<?
// url du script exécuté
$self=$_SERVER['PHP_SELF'];
// dirname() extrait le chemin de l'url
$chemin=dirname($self);
// getcwd() donne le chemin réel sur le système de fichier hôte
$rep=getcwd();
// pour récupérer les valeurs des paramètres éventuellement transmis par formulaire
if (isset($_POST['rep'])) {
$rep=$_POST['rep'];
$chemin=$_POST['ch'];
}
echo EXPLORER_ADRESS."<b>$chemin</b>";
$compt=0;
// $rep doit être un chemin de rép. réel sur le système : ne pas l'afficher
if( $dir = opendir($rep) ) {
while( FALSE !== ($fich = readdir($dir)) ) {
/* $fich est toujours un nom sans chemin d'accès !
* il désigne un fichier ou un s-rép ou les pseudo-rép '.' ou '..'
*/
// pour bloquer la remontée au dessus de la racine du site web
if (($fich == "..") && ($chemin !="/$self/") ){
// $rep contient le chemin réel vers le rép. courant
chdir($rep);
// pour se déplacer au rép. parent
chdir("..");
// pour récupérer ainsi le nouveau chemin
$newrep=getcwd();
// calculer le nouveau chemin WEB en éliminant le dernier rép.
if (preg_match("#(\S+)/\S+$#",$chemin))
{
$newchemin=preg_replace("#(\S+)/\S+$#", '$1', $chemin);
}
else
$newchemin = "/";
// transmission de $rep et $chemin par champs cachés de formulaire
echo "<form action='$self' method='post' >
<input type='hidden' name='rep' value='$newrep'>
<input type='hidden' name='ch' value='$newchemin'>
</form>";
// activer le lien provoque le rechargement du script
//echo dirname($_SERVER['PHP_SELF']);
if ( dirname($_SERVER['PHP_SELF']) != $chemin)
{
echo "<a href='#' onclick='document.forms[0].submit();'>
<img src='../images/style_dotdot.jpg' width='20' height='20' border='0' ><b>..</b></a>
<br>";
}
}
elseif ($fich != ".") {
if (is_dir($rep."/".$fich)) {
// pour compter les formulaires associés
$compt++;
chdir($rep."/".$fich);
$newrep=getcwd();
$newchemin= $chemin."/".$fich;
echo "<form action='$self' method='post' >
<input type='hidden' name='rep' value='".$newrep."'>
<input type='hidden' name='ch' value='".$newchemin."'>
</form>";
echo "<a href='#' onclick='document.forms[$compt].submit();'>
<img src='../images/style_directory.jpg' width=20 height=20 border=0>$compt-$fich</a>
<br>";
}
else {
$url = $chemin."/".$fich;
echo " <a href=\"javascript: OuvrirFenetre('$url');\">
<img src='../images/style_file.jpg' width=20 height=20 border=0>$fich</a><br>";
}
}
}
}
//footer
//include ('../includes/footer.php');
?>
<br /><br />
<!-- formulaire pour retourner à l'accueil de l'admin-->
<form method="post" action="../home.php">
<fieldset>
<legend><? echo EXPLORER_RETURN_FORM; ?></legend>
<p><input type="submit" name="retour" value="Retourner au menu d'administration" /></p>
</fieldset>
</form>
<!-- fin du formulaire de retour-->
<?
}
else
{
header("Location: ../index.php"); //on l'a renvoi sur la page d'accueil
exit();
}
?>
Maintenant, je voudrais que pour chaque répertoire ou sous-répertoire dans lequel l'utilisateur navigue, il puisse avoir la possibilité de créer un répertoire, en supprimer...Pour ça, j'ai créé un script qui permet de le faire, voici le code :
<?
//fichier qui permet la connexion au serveur et l'accès aux fonctions
include('../includes/config.php');
//fichier de langue
require ('../includes/language/french/directory.php');
//début langage html
include ('../includes/header.php');
//on vérifie que l'utilisateur s'est bien identifié
//s'il s'agit d'un administrateur admin ou sadmin
if ((isset($_SESSION['admin'])) or (isset($_SESSION['sadmin'])))
{
//on récupère tous les fichiers, qui sont dans le répertoire directory,
//on les stocke dans un tableau et on les affiche à l'écran
if( (!isset($_POST['dirname_add'])) && (!isset($_POST['dirname_delete'])) )
{
//on définit la variable path
$path = getcwd();
//on appelle la fonction
//list_dir($path);
}
//création d'un répertoire
if(isset($_POST['dirname_add']))
{
$path = getcwd();
$dirname = $_POST['dirname_add'];
//on supprime les accents
$dirname = strtr($dirname, "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ", "AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy");
mkdir_recursive($path.'/'.$dirname);
//list_dir($path);
}
//suppression d'un répertoire
elseif(isset($_POST['dirname_delete']))
{
$path = getcwd();
$dirname = $_POST['dirname_delete'];
//on supprime les accents
$dirname = strtr($dirname, "ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ", "AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy");
full_rmdir($path.'/'.$dirname);
//list_dir($path);
}
?>
<!-- formulaire de création d'un répertoire-->
<form method="post" action="directory.php">
<fieldset>
<legend><? echo DIRECTORY_FORM_CREATE; ?></legend>
<p><label for="dirname_add"><? echo DIRECTORY_NAME_CREATE; ?></label><input type="text" name="dirname_add" /></p>
<p><input type="submit" name="valider" value="Créer le répertoire" /></p>
</fieldset>
</form>
<!-- fin de formulaire de création de répertoire-->
<br />
<!-- formulaire de suppression d'un répertoire-->
<form name="suppr" method="post" action="directory.php" onSubmit="return confirmation();">
<fieldset>
<legend><? echo DIRECTORY_FORM_DELETE ?></legend>
<p><label for="dirname_delete"><? echo DIRECTORY_NAME_DELETE; ?></label><input type="text" name="dirname_delete" /></p>
<p><input type="submit" name="valider" value="Supprimer le répertoire" /></p>
</fieldset>
</form>
<!-- fin de formulaire de suppression de répertoire-->
<br /><br />
<!-- formulaire pour retourner à l'accueil de l'admin-->
<form method="post" action="../home.php">
<fieldset>
<legend><? echo DIRECTORY_RETURN_FORM; ?></legend>
<p><input type="submit" name="retour" value="Retourner au menu d'administration" /></p>
</fieldset>
</form>
<!-- fin du formulaire de retour-->
<?
}
//si la personne n'a pas le droit d'accéder à cette page
/*}
else
{
header("Location: ../index.php"); //on l'a renvoi sur la page d'accueil
exit();
}*/
//footer
include ("../includes/footer.php");
?>
Seulement, voilà mon problème est que je n'arrive pas à mettre en relation ces deux scripts et ainsi les lier pour obtenir ce que j'ai expliqué plus haut.Pouvez-vous m'aider ?