IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Problème avec is_file


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 87
    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.

  2. #2
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 61
    Par défaut
    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.

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 87
    Par défaut
    Voilà le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Ne serait-ce pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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).

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Avril 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 87
    Par défaut
    Bonjour, en rajoutant quelques slashes, ça fonctionne parfaitement, un tout grand merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème avec is_dir et is_file
    Par eric41 dans le forum Langage
    Réponses: 5
    Dernier message: 07/05/2008, 00h48
  2. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo