Afficher un repertoire avec des restrictions

Résolu/Fermé
Synerz Messages postés 1233 Date d'inscription mercredi 5 juin 2013 Statut Membre Dernière intervention 27 décembre 2017 - Modifié par Whismeril le 4/02/2015 à 17:18
Synerz Messages postés 1233 Date d'inscription mercredi 5 juin 2013 Statut Membre Dernière intervention 27 décembre 2017 - 5 févr. 2015 à 12:04
bonjour,

J'ai écris un code php pour afficher le contenu d'un répertoire avec une restriction mais mon script ne fonctionne pas j'aimerai avoir de l'aide.

<?php
//recuperation de la variable
$ID = isset($_GET['ID']) && !empty($_GET['ID'])?$_GET['ID']:NULL;

//Test de l'ID
if (($ID) == "3fuHXxYxaTJ84NQygauXCchT") {
 //nom du repertoire contenant les .HAR à afficher
      $nom_repertoire = '/opt/Fichier HAR';
   //on ouvre le repertoire
   $pointeur = opendir($nom_repertoire);
   //Tri des fichiers 
   while ($file = readdir ($pointeur)){
    if ($file == "www.test1*") echo "$file<br/>" 
       }  
  // fermeture du repertoire   
   closedir($pointeur);
//Test de l'ID   
} elseif (($ID) == "8FFSkmwmRAbrHMpfnAfqdDLC") {
 //nom du repertoire contenant les .HAR à afficher
    $nom_repertoire = '/opt/Fichier HAR';
 //on ouvre le repertoire
   $pointeur = opendir($nom_repertoire);
   //Tri des fichiers 
   while ($file = readdir ($pointeur)){
    if ($file == "test2*") echo "$file<br/>" 
       }  
  // fermeture du repertoire     
   closedir($pointeur);
//Test de l'ID    
} elseif (($ID) == "Emarf6d6rfqh7T8bDukG9YVb"){
 //nom du repertoire contenant les .HAR à afficher
    $nom_repertoire = '/opt/Fichier HAR';
 //on ouvre le repertoire
   $pointeur = opendir($nom_repertoire);
    //Tri des fichiers 
   while ($file = readdir ($pointeur)){
    if ($file == "test3*") echo "$file<br/>" 
       }  
   closedir($pointeur);
}

?>



Merci d'avance

EDIT: Précision du langage dans la coloration syntaxique.

Un peu d'aide contre un topic résolu !
A voir également:

1 réponse

jordane45 Messages postés 38350 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 décembre 2024 4 719
Modifié par jordane45 le 5/02/2015 à 12:02
Bonjour,

Ton script ne marche pas.. ... ok... mais en quoi ne fonctionne t'il pas ??

Bon.. après une brève lecture.. je me demande si tu n'aurais simplement pas oublié des points virgules derrière tes echo...

Bon.. de toutes façons on peut facilement rendre ton script plus beau et plus maintenable...


<?php
//recuperation de la variable
$ID = isset($_GET['ID']) && !empty($_GET['ID'])?$_GET['ID']:NULL;

if($ID){
//Test de l'ID
switch($ID){
 case "3fuHXxYxaTJ84NQygauXCchT" :
   $nom_repertoire = '/opt/Fichier HAR';
   $fichier = "www.test1*";
   break;
  
  case "8FFSkmwmRAbrHMpfnAfqdDLC" :
   $nom_repertoire = '/opt/Fichier HAR';
   $fichier = "test2*";
   break;
  
  case "Emarf6d6rfqh7T8bDukG9YVb" :
   $nom_repertoire = '/opt/Fichier HAR';
   $fichier = "test3*";
   break;

  default:
  echo "<br>ERREUR : ID Inconnu ! "; 
}

  //--- LECTURE ---
  //on ouvre le repertoire
  $pointeur = opendir($nom_repertoire);
  while ($file = readdir($pointeur)){
    if ($file == $fichier ){
    echo $file."<br/>";
  }
 }  
 closedir($pointeur);
   
}else{
 echo "<br> ERREUR ! NO ID !!";
}





EDIT : Correction nom de variable $ficher en $fichier dans le IF
Cordialement,
Jordane
0
jordane45 Messages postés 38350 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 décembre 2024 4 719
4 févr. 2015 à 19:10
Par contre.... tu as mis une astérisque à côté du nom des fichiers..... tu veux surement dire qu'il peut y avoir d'autres caractères derrières non ?
Donc utiliser un EGAL avec ça.. risque de ne pas fonctionner non ??

Regardes plutot du côté de strpos (et retire les asterisques * ) :
  //on ouvre le repertoire
  $pointeur = opendir($nom_repertoire);
  while ($file = readdir($pointeur)){
    if (strpos($file, $fichier)){
     echo $file."<br/>";
  }
 }  
 closedir($pointeur);


ou après.. tu peux aussi regarder du côté des expressions régulières.
(avec preg_match par exemple) => (et retire les asterisques * )
  //on ouvre le repertoire
  $pointeur = opendir($nom_repertoire);
  while ($file = readdir($pointeur)){
    if (preg_match("#^".$file."(.*)$#i", $fichier)){
     echo $file."<br/>";
  }
 }  
 closedir($pointeur);
0
Synerz Messages postés 1233 Date d'inscription mercredi 5 juin 2013 Statut Membre Dernière intervention 27 décembre 2017 116
5 févr. 2015 à 09:15
Déjà merci de ta réponse, il ne fonctionne pas parce que une fois l'id récupérer il ne liste pas le répertoire. Oui les astérisques servent a ça mais ça ne fonctionne pas en php ?
0
jordane45 Messages postés 38350 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 décembre 2024 4 719 > Synerz Messages postés 1233 Date d'inscription mercredi 5 juin 2013 Statut Membre Dernière intervention 27 décembre 2017
5 févr. 2015 à 09:26
Oui les astérisques servent a ça mais ça ne fonctionne pas en php

Comme dans beaucoup de langages.... le signe EGAL sous entend que tu cherches une correspondance EXACTE et donc ...les caractères jocker ne sont pas interpretés...
0
Synerz Messages postés 1233 Date d'inscription mercredi 5 juin 2013 Statut Membre Dernière intervention 27 décembre 2017 116 > jordane45 Messages postés 38350 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 décembre 2024
5 févr. 2015 à 09:30
Ah oui c'est vrai ! Donc je dois faire comment exactement ? Je suis pas ttres bon en PHP :/
Dans les fichier de log j'ai cette erreur :
- Undefined variable: nom_repertoire in /var/www/html/index.php on line 29
- readdir() expects parameter 1 to be resource, boolean given in /var/www/html/index.php on line 30
- closedir() expects parameter 1 to be resource, boolean given in /var/www/html/index.php on line 35
Donc il pointe pas au bon endroit pourtant j'ai ajouté un Alias dans HTTPD.conf :/
0
jordane45 Messages postés 38350 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 26 décembre 2024 4 719 > Synerz Messages postés 1233 Date d'inscription mercredi 5 juin 2013 Statut Membre Dernière intervention 27 décembre 2017
5 févr. 2015 à 09:49
là il te dit que la variable $nom_repertoire n'est pas définie ... ce qui laisse penser que (si tu as repris mon code) que tu es dans le cas où aucun ID ne correspond à ce que tu passes en paramètre.....

tu n'as rien qui s'affiche sur ta page ??
0