Liste déroulante dynamique

acetouk Messages postés 7 Date d'inscription vendredi 14 octobre 2005 Statut Membre Dernière intervention 18 octobre 2009 - 17 oct. 2009 à 17:31
snawnaw6 Messages postés 1 Date d'inscription mardi 6 octobre 2009 Statut Membre Dernière intervention 20 octobre 2009 - 20 oct. 2009 à 19:00
Bonjour à tous,

J'ai récemment découvert le code suivant, me permettant de lister de façon déroulante, le contenu d'un dossier.


<select name="fichier">
<?php
$rep = opendir('upload/resultats/');
if(!$rep)
exit;

$i = 0;
while($file = readdir($rep))
echo '<option value="' . $value++ . '">' . $file . '</option>';

closedir($rep);

?>
</select>

Ce code est très bien, cependant je me demandais s'il était possible d'ajouter quelque chose, permettant à l'utilisateur d'ouvrir le document listé, dans une nouvelle fenetre ? Par l'intérmédiaire d'un bouton ou autre.

Merci d'avance pour vos idées, suggestions ou réponses,

Sebastien

9 réponses

neigedhiver Messages postés 2480 Date d'inscription jeudi 30 novembre 2006 Statut Membre Dernière intervention 14 janvier 2011 19
17 oct. 2009 à 22:37
Salut,

Désolé, mais non, ce code n'est pas bien. Cette ligne notamment :
while($file = readdir($rep))

n'est pas rigoureuse. Cf : readdir() (Avertissement et exemple 1) pour voir ce qui ne va pas.

Pour afficher le contenu d'un fichier listé, il faut un script qui le fasse... Ta liste se trouve dans un formulaire, c'est donc le script qui gère le formulaire qui va gérer ça.
Le script doit simplement faire :
<?php
echo file_get_contents($_POST['fichier']);
?>


Si tu souhaites afficher le contenu du fichier dans une popup, il peut être utile d'utiliser Javascript, avec l'évènement onchange de la liste <select>, lequel soit ouvre une nouvelle fenêtre (window.open) soit charge le résultat du script dans un
caché, affiché à ce moment là (ou avec une bibliothèque genre shadowBox, LightBox,...), avec un peu d'Ajax.

!!! ATTENTION !!!
Ce genre de code est très dangereux : il est INDISPENSABLE de vérifier que l'utilisateur a LE DROIT de lire le contenu du fichier (authentification ?) et de vérifier que le fichier demandé est AUTORISE (qu'il se trouve donc bien dans le répertoire, avec realpath(), pour éliminer les ../ du chemin qui pourraient provoquer une faille de sécurité).

--
Neige

N'hésitez pas à lire la doc
Rejoignez-nous