problème lister un répertoire

Eléphant du PHP | 259 Messages

30 juil. 2007, 18:41

bonjour

j'ai un petit problème pour lister un répertoire
je me suis inspiré de cette page :
http://www.asp-php.net/tutorial/asp-php/directory.php

mais celà ne fonctionne pas

voici mon code
<?php
$logs=$_GET['logs'];
if($logs=="requetes"){ $repertoire="logs/requetes/";}
elseif($logs=="campagnes"){ $repertoire="logs/campagne/";}
elseif($logs=="ips"){ $repertoire="logs/ips/";}
?>
<br /><div class="titre">résultat pour logs de <?php echo"$logs"; ?></div><br /><br />
<?php
if($logs=="fichier")
	{
	$fichier=$_GET['fichier'];
       //ouverture du fichier
	}
else
	{
// listage du répertoire
	$dir=opendir($repertoire); 
	while($f=readdir($dir)) 
		{
		if(is_file($repertoire.$f)) 
			{
			echo "<b><u> Nom : </b></u>".$f;
			echo "<b><u> Consulter : </b></u> <a href=\"\">consulter</a>";
			echo "<b><u> Taille : </b></u>".filesize($rep.$f)." octets";
			echo "<b><u> Création : </b></u>".dd(filectime($rep.$f));
			echo "<b><u> Modification : </b></u>".dd(filemtime($rep.$f));
			echo "<b><u> Dernier accès : </b></u>".dd(fileatime($rep.$f));
			echo "<br><br>";
			}
		}
	closedir($dir);
	}
pourriez vous m'aider svp ?

merci
l'hébergeur gratuit que j'utilisais: http://www.freeheberg.com (pas de limitte de débit, BP, 1à10Go, bdd mysql illimitées )
mainteant je suis chez OVH, payant mais plus adapté à de gros sites

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 juil. 2007, 19:08

une erreur à nous fournir ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 259 Messages

30 juil. 2007, 19:08

oui : rien ne s'affiche alors qu'il y a environ 800 fichiers dans le répertoire des requètes

edit : aussi je ne peux plus vous fournir d'erreur car suite a un problème de php.ini quand il y a une erreur celà ne l'affiche plus
l'hébergeur gratuit que j'utilisais: http://www.freeheberg.com (pas de limitte de débit, BP, 1à10Go, bdd mysql illimitées )
mainteant je suis chez OVH, payant mais plus adapté à de gros sites

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

30 juil. 2007, 20:37

Pour les messages d'erreur il suffit de le paramétrer dans le .ini ou de spécifier le niveau d'erreur que tu veux gérer avec la fonction error_reporting() :
error_reporting(E_ALL);
As-tu vérifié que le dossier que tu essayes d'ouvrir est bien présent ? Pour rappel, le chemin doit être relatif au script, il faut donc d'après ton code que le dossier "logs" soit présent dans le dossier ou s'exécute le script...
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 259 Messages

31 juil. 2007, 22:09

bonjour

j'essaye maintenant avec une autre méthode
mais j'ai une erreur

voici le code
$d=$_GET['d'];
$type=$_GET['type'];
$parent=$_GET['parent'];

if(empty($d)||empty($type))
{
$d="./logs/";
$type="rep";
}

if($type=="file")
{

}
else
	{
	$d=dir("./logs/");
	echo "Pointeur: ".$d->handle."<br>\n";
	echo "Chemin: ".$d->path."<br>\n";
	echo"Parent : <a href=\"/index.php?page=adminpaneltools&sous=listerlogs&d=$parent&type=rep\" class=menuling>explorer</a><br>\n";
	while($entry=$d->read()) 
		{
		$pt=strpos($entry,'.');
		echo $entry." $pt ";
		if($pt>=1)//fichier
			{
			$nd=$d.$entry;
			echo"<a href=\"/index.php?page=adminpaneltools&sous=listerlogs&d=$nd&type=file&parent=$d\" class=menuling>consulter</a>";
			}
		else //répertoire
			{
			$nd=$d.$entry;
			echo" <a href=\"/index.php?page=adminpaneltools&sous=listerlogs&d=$nd&type=rep&parent=$d\" class=\"menulink\">explorer</a>";
			}
		}
	$d->close();

}
il y a un blocage aux affichages :
Catchable fatal error: Object of class Directory could not be converted to string in D:\FTP\www\clients\yuuzhantar\admin\listerlogs.php on line 38
pourriez vous m'aider svp ?

merci
l'hébergeur gratuit que j'utilisais: http://www.freeheberg.com (pas de limitte de débit, BP, 1à10Go, bdd mysql illimitées )
mainteant je suis chez OVH, payant mais plus adapté à de gros sites

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

31 juil. 2007, 22:18

ligne 38 ?

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

31 juil. 2007, 23:29

Tu as nommé ta variable contenant le chemin $d, et tu écrases ensuite cette variable en ayant également nommé le pointeur du dossier $d... donc forcément quand tu l'utilises pour concaténer chemin et fichier, php rale en te disant qu'à la ligne 38, tu utilises un objet de type Directory que tu essayes sauvagement de transformer en chaine de caractères.

Je suppose que la ligne 38 doit être celle-ci (sachant que tu auras la même erreur quelques lignes plus bas) :
$nd=$d.$entry; 
En donnant des noms plus explicites à tes variables tu éviterais ce genre de désagréments :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 259 Messages

01 août 2007, 19:43

oui la ligne 38 est bien celle ci

mais je ne comprends pas votre remarque, comment dois-je mettre en forme le code ?
l'hébergeur gratuit que j'utilisais: http://www.freeheberg.com (pas de limitte de débit, BP, 1à10Go, bdd mysql illimitées )
mainteant je suis chez OVH, payant mais plus adapté à de gros sites

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

01 août 2007, 20:12

Tu as nommé ta variable contenant le chemin $d, et tu écrases ensuite cette variable en ayant également nommé le pointeur du dossier $d... donc forcément quand tu l'utilises pour concaténer chemin et fichier, php rale en te disant qu'à la ligne 38, tu utilises un objet de type Directory que tu essayes sauvagement de transformer en chaine de caractères.
On ne peut pas en dire plus que Ryle "change le nom de la variable"

ici tu as un objet
$d=dir("./logs/"); 
et la une chaine
$nd=$d.$entry;
:idea:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 259 Messages

01 août 2007, 22:10

ah d'accord, je vois

merci bien
l'hébergeur gratuit que j'utilisais: http://www.freeheberg.com (pas de limitte de débit, BP, 1à10Go, bdd mysql illimitées )
mainteant je suis chez OVH, payant mais plus adapté à de gros sites