Précédent   Forum des professionnels en informatique > PHP > Langage > Fichiers
Fichiers Forum d'entraide sur les fichiers avec PHP. Avant de poster -> FAQ fichiers et Sources fichiers
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/11/2007, 00h24   #1
Invité régulier
 
Inscription : avril 2007
Messages : 35
Détails du profil
Informations personnelles :
Âge : 20
Localisation : Belgique

Informations forums :
Inscription : avril 2007
Messages : 35
Points : 8
Points : 8
Par défaut Problème avec is_file

Bonjour, avec un ami nous programmons un petit explorateur de fichiers en php.
Nous rencontrons cependant un petit problème lors du listage de nos fichiers/dossiers.
Nous utilisons la fonction is_file pour vérifier si c'est un fichier ou non, si c'est un fichier, nous n'affichons pas de lien vers le contenu, si ce n'est pas un fichier nous affichons donc un lien (vu que c'est un dossier dans ce cas).
A la racine, tout fonctionne bien.
Lorsque l'on rentre dans un fichier, tout peut-être cliqué, même les fichiers.
Pour rentrer dans un dossier, nous utilisons $_GET pour passer le nom du fichier.

S'il vous faut la source, n'hésitez pas à demander.

Voilà, si vous avez des hypothèses, merci d'avance!
Bonne soirée.
Portus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2007, 00h59   #2
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 55
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 55
Points : 28
Points : 28
Oui, ça serait mieux de voir le code. C'est un peu dur de t'aider avec si peu d'infos

La première fois que j'ai voulu faire de genre de chose, je m'étais inspiré de l'index.php qui permet de lister tous les projets sous easyphp. C'est simple et facile à comprendre.
ragnarokr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2007, 01h04   #3
Invité régulier
 
Inscription : avril 2007
Messages : 35
Détails du profil
Informations personnelles :
Âge : 20
Localisation : Belgique

Informations forums :
Inscription : avril 2007
Messages : 35
Points : 8
Points : 8
Voilà le code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
 
 
<?php
 
/* Début du script générique (lister les fichiers du dossier courant) */
if (isset($_GET['dossier']) AND $_GET['dossier'] != NULL) //Si cette variable existe
{
	$chemin = stripslashes($_GET['dossier']);	//Traitement des quotes
	if($_SESSION['systeme'] == 'NoWeb')
	{
	  $real = realpath($_GET['dossier']).'\\'; //On obtient le chemin absolu du dossier
	}
	else
	{
	  $real = realpath($_GET['dossier']).'/'; //On obtient le chemin absolu du dossier
	}
}
 
else //Sinon, bah
{
	$chemin = dirname(__FILE__); //On extrait le chemin du script courant (__FILE__ renvoie le chemin + nom du script courant)
	if(preg_match('#/\/#', $chemin))
	{
	  echo $chemin;
	  $_SESSION['systeme'] = 'NoWeb';
	}
	else
	{
	  $_SESSION['systeme'] = 'Web';
	}
}
 
$repertoire = opendir($chemin); //Ouverture du dossier
while ($contenu = readdir($repertoire)) //Lecture du dossier + boucle
{
	if ($contenu != '.') //Ne pas afficher le . (répertoire courant) => BUG POUR LES SOUS REPERTOIRES A RESOUDRE
	{
		if (is_file($contenu) OR preg_match('#(\.[a-zA-z])+$#',$contenu)) //Si $contenu est un fichier
		{
			echo $contenu.' | Taille : '.filesize($contenu).' octets.';
			?>
            <a href = "<?php echo $_SERVER['PHP_SELF'].'?dossier='; if (isset($_GET['dossier']) AND $_GET['dossier'] != '') echo $real; else echo '.'; echo '&amp;supprimer_fichier='; if (isset($_GET['dossier']) AND $_GET['dossier'] != NULL) echo $real; echo $contenu; ?>">Supprimer</a>
			<a href = "<?php echo $_SERVER['PHP_SELF'].'?dossier='; if (isset($_GET['dossier']) AND $_GET['dossier'] != '') echo $real; else echo  '.'; echo '&amp;editer_fichier='; if (isset($_GET['dossier']) AND $_GET['dossier'] != NULL) echo $real; echo $contenu; ?>">Editer</a><br />
		<?php
		}
 
		else //Sinon, on affiche sous forme de lien
		{
			?>
			<a href = "<?php echo $_SERVER['PHP_SELF'].'?dossier='; if (isset($_GET['dossier']) AND $_GET['dossier'] != NULL) echo $real; echo $contenu; ?>"><?php echo '/'.$contenu.'/'; ?></a> | Taille : <?php if (isset($_GET['dossier']) AND $_GET['dossier'] != '') echo disk_total_space($real.$contenu); else { if($_SESSION['systeme'] == 'NoWeb') echo disk_total_space($chemin.'\\'.$contenu);  else echo disk_total_space($chemin.'/'.$contenu); } ?> octets.
			<a href = "<?php echo $_SERVER['PHP_SELF'].'?dossier='; if (isset($_GET['dossier']) AND $_GET['dossier'] != '') echo stripslashes($_GET['dossier']); else echo '.'; echo '&amp;supprimer_dossier='; if (isset($_GET['dossier']) AND $_GET['dossier'] != NULL) echo $real; echo $contenu; ?>">Supprimer</a><br />
			<?php
		}
	}
}
closedir($repertoire);
/* Fin du script générique */
?>
Merci pour easyphp
Portus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2007, 11h26   #4
En attente de confirmation mail
 
Inscription : juin 2002
Messages : 6 164
Détails du profil
Informations forums :
Inscription : juin 2002
Messages : 6 164
Points : 6 404
Points : 6 404
Ne serait-ce pas :
Code :
1
2
3
		if (is_file($chemin . $contenu) OR preg_match('#(\.[a-zA-z])+$#',$contenu)) //Si $contenu est un fichier
		{
			echo $contenu.' | Taille : '.filesize($chemin . $contenu).' octets.';
Voir peut être $real à la place de $chemin, en ajoutant, si besoin, le séparateur de répertoire (DIRECTORY_SEPARATOR).
julp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2007, 11h38   #5
Invité régulier
 
Inscription : avril 2007
Messages : 35
Détails du profil
Informations personnelles :
Âge : 20
Localisation : Belgique

Informations forums :
Inscription : avril 2007
Messages : 35
Points : 8
Points : 8
Bonjour, en rajoutant quelques slashes, ça fonctionne parfaitement, un tout grand merci!
Portus est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h34.


 
 
 
 
Partenaires

Hébergement Web