|
|
|
|
Bonjour,
J'essai de réaliser un gestionnaire de fichier en php. Celui-ci à pour but de me monter des partitions distante grâce à samba et sa commande smbmount.
Le script marche trés bien et me liste correctement les dossier des partitions que je demandes.
En revanche, il n'est pas capable de me lister le contenue des sous dossier, du moins de façon dynamique.
La seule idée que j'ai est de créer une portion de code pour chaque sous dossier etc ... mais ce n'est pas viable car je ne peux pas prévoir si l'utilisateur va ou non créer dans un futur proche ou lointain de nouveaux dossier.
Je chercher donc une façon dynamique de gérer mes fichier, une façon qui prendrait en compte le contenue de mes sous dossier etc...
J'ai recherché du côtés de la méthode $_GET mais je n'arrives pas a en sortir une conclusion exploitable. Je vous laisse le code en dessous :
<?php
session_start();
$_SESSION['login']=$_POST['login'];
$login = $_SESSION['login'];
$psw = $_POST['psw'];
//----------------------------------------------------------------------------------------------------
// Création des différents dossiers
//----------------------------------------------------------------------------------------------------
@mkdir("/home/$login" ,0777);
exec('mkdir /home/marchann/P');
exec('chmod -R 777 /home/marchann/P');
@mkdir("/home/$login/K/" ,0777);
//----------------------------------------------------------------------------------------------------
// Montage des partitions / Identification
//----------------------------------------------------------------------------------------------------
exec("smbmount //xxx.xxx.xxx.xx/p$login /home/$login/P -o username=$login%$psw netbios=//xxx.xxx.xxx.xx/p$login");
exec("smbmount //xxx.xxx.xxx.xxx/STIDETU /home/$login/K -o username=$login%$psw netbios=//xxx.xxx.xxx.xxx/STIDETU");
echo "<b>Vous êtes identifié sous :</b> ";
echo $_SESSION['login'];
echo ('<br />+ <a href="deconection.php">Deconnection</a><br /><br />');
//----------------------------------------------------------------------------------------------------
// Liste le contenue de P
//----------------------------------------------------------------------------------------------------
echo ('<fieldset><legend><b>Contenue de votre lecteur P: </b></legend><br />');
echo ('<table align="center" valign="top">');
//Private
$nb_fichier = 0; //Initialisation du compteur de fichier/dossiers à 0
if($dossier = @opendir("./$login/P/Private/"))
{
echo '<tr><td>';
echo ('<fieldset><legend><b>Private</b></legend><br />');
echo ('+ <a href="create_dossierP.php" alt="Créer un nouveau dossier">Créer des nouveaux dossiers</a><br />');
echo ('+ <a href="ajouterPprivate.php" alt="Uploader un fichier dans P">Uploader des fichier</a><br />');
echo ('+ <a href="supressionP.php" alt="Supprimer des fichiers dans P">Supprimer des fichiers</a><br /><br />');
while(false !== ($fichier = readdir($dossier)))
{
if($fichier != '.' && $fichier != '..' && $fichier != 'index.php')
{
$nb_fichier++; //On incrémente le compteur de un
echo '<li>';
echo '<a href=';
echo "./$login/P/Private/$fichier>";
echo $fichier;
echo '</a></li>';
} //end if
} //end boucle
echo '<br />';
echo 'Il y a <strong>' . $nb_fichier .'</strong> fichier(s)/dossier(s) dans <b>P/Private/</b></fieldset></td><br /><br />';
closedir($dossier);
}
//Travail
echo '<td>';
$nb_fichier = 0;
if($dossier = @opendir("./$login/P/Travail/"))
{
echo ('<fieldset><legend><b>Travail</b></legend><br />');
echo ('+ <a href="create_dossierP.php" alt="Créer un nouveau dossier">Créer des nouveaux dossiers</a><br />');
echo ('+ <a href="ajouterPtravail.php" alt="Uploader un fichier dans P">Uploader des fichiers</a><br />');
echo ('+ <a href="supressionP.php" alt="Supprimer des fichiers dans P">Supprimer des fichiers</a><br /><br />');
while(false !== ($fichier = readdir($dossier)))
{
if($fichier != '.' && $fichier != '..' && $fichier != 'index.php')
{
$nb_fichier++; //On incrémente le compteur de un
echo '<li>';
echo '<a href=';
echo "./$login/P/Travail/$fichier>";
echo $fichier;
echo '</a></li>';
} //end if
} //end boucle
echo '<br />';
echo 'Il y a <strong>' . $nb_fichier .'</strong> fichier(s)/dossier(s) dans <b>P/Travail/</b><br /><br />';
closedir($dossier);
}
echo '</td></tr></table></fieldset>';
//----------------------------------------------------------------------------------------------------
// Liste le contenue de K
//----------------------------------------------------------------------------------------------------
$nb_fichier = 0;
if($dossier = @opendir("./$login/K/"))
{
echo ('<fieldset><legend><b>Contenue de votre lecteur K: </b></legend><br />');
while(false !== ($fichier = readdir($dossier)))
{
if($fichier != '.' && $fichier != '..' && $fichier != 'index.php')
{
$nb_fichier++; //On incrémente le compteur de un
echo '<li>';
echo '<a href=';
echo "./home/$login/K/$fichier>";
echo $fichier;
echo '</a></li>';
} //end if
} //end boucle
echo '<br />';
echo 'Il y a <strong>' . $nb_fichier .'</strong> fichier(s)/dossier(s) dans votre lecteur <b>K</b></fieldset>';
closedir($dossier);
}//END
?>
Configuration: Linux Epiphany 2.14
Répondre à killermano66
|
Ben disons que l'AJAX c'est pas faute d'avoir essayer mais ça reste un certains mystère pour moi. Je n'ai pas vraiment de mal avec des langage comme le C par exemple mais l'AJAX me parraît être un bordel monstrueux.
|
Bon, j'ai a peu prés saisis le principe et j'en suis venu à ce script :
//----------------------------------------------------------------------------
// Test pour les divers navigateurs
//----------------------------------------------------------------------------
if(windows.XMLHttpRequest)
{
xhr = new XMLHttpRequest(); //Pour firefox
}
else
{
xhr = new ActiveXObject("Microsoft.XMLHTTP"); //IE
}
//----------------------------------------------------------------------------
//Attente de la réponse passage de l'état 1 à 4
//----------------------------------------------------------------------------
xhr.onreadystatechange = function()
{
if(xhr.readyState == 4) //Si requete terminé
{
if(xhr.status == 200)
{
//La requête est prête à être envoyée
}
else
{
// Pas bon, on affiche une erreur
}
}
else
{
//Attente de la réponse
}
}
Bon ok, il ne fait rien mais je pense qu'il n'est pas faux. Maintenant je ne vois pas quoi rajouter ici : if(xhr.status == 200) { //La requête est prête à être envoyée } Pour que la page aille chercher les données sur un serveur distant. Voilà voilà si tu as des remarques. Merci ;) |
Bonjour à tous,
<?php
session_start();
$_SESSION['login']=$_POST['login'];
$login = $_SESSION['login'];
$psw = $_POST['psw'];
?>
<html>
<head>
<script language="javascript">
function submitForm()
{
var req = null;
document.getElementById("zone").innerHTML = "Started...";
if (window.XMLHttpRequest)
{
req = new XMLHttpRequest();
if (req.overrideMimeType)
{
req.overrideMimeType('text/xml');
}
}
else if (window.ActiveXObject)
{
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e)
{
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
req.onreadystatechange = function()
{
document.getElementById("zone").innerHTML = "Wait server...";
if(req.readyState == 4)
{
if(req.status == 200)
{
document.getElementById("zone").innerHTML = "Received:" + req.responseText;
}
else
{
document.getElementById("zone").innerHTML="Error: returned status code " + req.status + " " + req.statusText;
}
}
};
req.open("GET", "connection2.php", true);
req.send(null);
}
</script>
</head>
<body>
<?php
//----------------------------------------------------------------------------------------------------
// Création des différents dossiers
//----------------------------------------------------------------------------------------------------
@mkdir("/home/$login" ,0777);
exec('mkdir /home/marchann/P');
exec('chmod -R 777 /home/marchann/P');
@mkdir("/home/$login/K/" ,0777);
//----------------------------------------------------------------------------------------------------
// Montage des partitions / Identification
//----------------------------------------------------------------------------------------------------
exec("smbmount //xxx.xxx.xxx.xx/p$login /home/$login/P -o username=$login%$psw netbios=//xxx.xxx.xxx.xx/p$login");
exec("smbmount //xxx.xxx.xxx.xxx/STIDETU /home/$login/K -o username=$login%$psw netbios=//xxx.xxx.xxx.xxx/STIDETU");
echo "<b>Vous êtes identifié sous :</b> ";
echo $_SESSION['login'];
echo ('<br />+ <a href="deconection.php">Deconnection</a><br /><br />');
//----------------------------------------------------------------------------------------------------
// Liste le contenue de P
//----------------------------------------------------------------------------------------------------
echo ('<fieldset><legend><b>Contenue de votre lecteur P: </b></legend><br />');
echo ('<table align="center" valign="top">');
//Private
$nb_fichier = 0; //Initialisation du compteur de fichier/dossiers à 0
if($dossier = @opendir("./$login/P/Private/"))
{
echo '<tr><td>';
?>
<?php
echo '<div id="zone">';
echo ('<fieldset><legend><b>Private</b></legend><br />');
echo ('+ <a href="create_dossierP.php" alt="Créer un nouveau dossier">Créer des nouveaux dossiers</a><br />');
echo ('+ <a href="ajouterPprivate.php" alt="Uploader un fichier dans P">Uploader des fichier</a><br />');
echo ('+ <a href="supressionP.php" alt="Supprimer des fichiers dans P">Supprimer des fichiers</a><br /><br />');
while(false !== ($fichier = readdir($dossier)))
{
if($fichier != '.' && $fichier != '..' && $fichier != 'index.php')
{
$nb_fichier++; //On incrémente le compteur de un
echo '<li>';
?>
<a href="#" onclcik="submitForm()">
<?php echo $fichier; ?></a>
</a></li>
<?php // On relançe php
} //end if
} //end boucle
(suite du code ... )
Donc, ce code fonctionne trés bien, je crée des liens qui me listent le contenu de mon répertoire P/Travail grace à une boucle while. A chacun de ces lien j'ascocie la fonction AJAX submitForm() qui me permet de changer l'apparence de la page mère sans la recharger en incluant une autre page grâce à req.open("GET", "connection2.php", true); Donc ceci est vraiment un test car mon but est de charger le contenue des sous dossier de P/Travail grâce à cette même méthode, sans recharger la page et celà de façon dynamique. Mais j'avous bloquer, je ne vois pas comment faire pour récupérer les donnée d'un serveur distant et les afficher grâce à AJAX. Récupérer un fichier et l'afficher est une chose, récupérer tous le comptenu d'un dossier pour l'afficher en est une autre. Je vous fait un schéma de mon P/Travail :
P/Travail :
+Eudora (dossier)
- Fichier 1
- Fichier 2
- Fichier 3
- Fichier 4
+FireFox (dossier)
- Fichier 1
- Fichier 2
- Fichier 3
- Fichier 4
- Dossier 1
+Netscape (dossier)r)
+fichier.txt
etc ...
En espérant trouver de l'aide. Je vous remercis à l'avançe ;) @+ |
Répondre à killermano66
|