Afficher un repertoire avec des restrictions

Résolu
Synerz Messages postés 1234 Date d'inscription   Statut Membre Dernière intervention   -  
Synerz Messages postés 1234 Date d'inscription   Statut Membre Dernière intervention   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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 1234 Date d'inscription   Statut Membre Dernière intervention   116
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Synerz Messages postés 1234 Date d'inscription   Statut Membre Dernière intervention  
 
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 1234 Date d'inscription   Statut Membre Dernière intervention   116 > jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention  
 
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Synerz Messages postés 1234 Date d'inscription   Statut Membre Dernière intervention  
 
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