2012-04-14 7 views
1

donc je suis la liste des éléments dans une page pour mes films dir et tant qu'il n'y a pas de sous-répertoire, il semble que ce soit bien.php is_dir ne fonctionne pas parfois

La page peut être visualisée ici. http://jnks.dyndns.org/dirlist.php

le code le plus pertinent peut être ramassé à partir de là jusqu'au XHR pour envoyer la page info.php. Tout cela semble solide, je pense, car cela fonctionne pour les dossiers avec des fichiers en eux et pas d'autres dossiers.

est ici le code de la functions.php

$exts = array(
    '.mp4' => 'Apple Video', 
    '.m4v' => 'Apple Video', 
    '.ogg' => 'OGG Vorbis Video', 
    '.ogv' => 'OGG Vorbis Video', 
    '.webm' => 'MS Video', 
    '.avi' => 'MS Video', 
    '.mkv' => 'Matroska Video', 
    '.iso' => 'Compressed DVD' 
); 

if(isset($_POST['dirName'])) { 
$arg = $_POST['dirName']; 
$dirList = scandir($arg); 
echo '<ul>'; 
foreach($dirList as $dirs){ 
    if($dirs === '.' || $dirs === '..') {continue;} //remove dots 
    if(is_dir($dirs)){ 
     echo '<li class="lv2" id="'.$arg.'\\'.$dirs.'" onclick="getDirList(this)">'.$dirs.'</li>'; //if dir create new nested list with function to drill down 
    } else { 
     $ext = strrchr($dirs,'.'); 
     if($exts[$ext]){ 
      echo '<li class="lv3" id="'.$dirs.'" data-folder="'.$arg.'\\'.$dirs.'" onclick="openFile(this)">'.$dirs.'</li>'; //if files then create new nested list 
     } 
    } 
} 
echo '</ul>'; 
} else { 
    echo 'POST variable is not set'; 
} 

il semble que is_dir ne veut pas travailler. J'ai fait des recherches et tout le monde semble avoir des problèmes à ne pas utiliser des chemins absolus. Je sais que ce n'est pas mon problème car j'ai imprimé le $ arg var avec la ligne d'écho pour la dernière balise ul et il montre un chemin complet et ce n'est certainement pas des permissions. J'ai essayé de changer is_dir en! Is_file et cela lui permet de lister les dossiers mais il liste également les fichiers que je ne veux pas montrer car il contourne mon filtre ext (je suppose que je pourrais ajouter le filtre mais is_dir devrait fonctionner correctement?).

Donc, fondamentalement, j'ai besoin d'aide pour que cela fonctionne. Suis-je fou et ne comprends pas is_dir ou y a-t-il un meilleur moyen?

Aussi si quelqu'un veut regarder le JavaScript que j'utilise pour cacher les listes imbriquées si un est déjà affiché s'il vous plaît n'hésitez pas. Je pense que c'est une façon très "hack" de le faire mais je suis encore assez nouveau et je ne connais pas beaucoup de trucs. C'est dans la section jQuery AJAX de dirList.js

Btw, assurez-vous d'utiliser un navigateur compatible HTML5 comme j'utilise le tag vidéo parmi d'autres choses HTML5. J'utilise le chrome tout en développant cela.

Merci.

modifier pour poser un autre type de question connexe.

J'ai simulé un mode plein écran pour la balise vidéo en utilisant CSS et cela fonctionne très bien, sauf qu'il affiche toujours la barre de défilement sur la droite et il devient agaçant sur des scènes vraiment sombres. Y a-t-il un moyen de s'en débarrasser? Il persiste même si je suis en mode plein écran dans le navigateur (f11). Le navigateur est à nouveau Chrome et j'ai l'index z sur 10 et rien d'autre n'est défini.

modifier.

Je me suis débarrassé de la barre de défilement en faisant css ('débordement', 'caché') $ ('corps'); dans le cadre de ma fonction plein écran et je l'ai juste éteint quand il est retourné.

+0

is_dir sera aussi fai l sur quelque chose comme: C: \ wamp \ www \ hmvc \ ressources \ lang \ es-ar (ou nix équiv.) - note trait d'union dans es-ar – Jeffz

Répondre

0

is_dir() fonctionne sur les chemins de fichier complets. Vous lui passez juste un nom de fichier ... même si ce fichier est situé dans le répertoire pointé par $arg.

Essayez is_dir($arg . "/" . $dirs).

+0

Je ne comprends pas Je passe un chemin complet pas de noms de fichiers. Si je fais votre suggestion je finirai par lui dire de scanner d: \ moviesD: \ movies \ quel que soit ce dir cela ne fonctionnera évidemment pas. J'utilise l'ID pour fournir le chemin et c'est le chemin complet vers ce dossier. –

+0

nevermind Je vois ce que vous voulez dire scandir ne renvoie que le nom du nouveau répertoire et par conséquent is_dir ne fonctionne pas. est parfaitement logique maintenant. Je savais que c'était quelque chose de stupide qui me manquait. Merci. –

0

Le problème est exactement pas en utilisant un chemin absolu,

Dans votre cas, vous pouvez le fixer modifier par la manière suivante:

$arg = $_POST['dirName']; à $arg = realpath($_POST['dirName']);

http://php.net/manual/en/function.realpath.php

Et if(is_dir($dirs)){ à if(is_dir($arg . '/' .$dirs)){

Questions connexes