Besoin d'aide pour decrypter script php

Résolu/Fermé
debutant - 2 juin 2009 à 02:23
 debutant - 3 juin 2009 à 00:08
bonjour , j'ai du mal a interpréter deux ligne du code php ci dessous
je mettrais en gras a coter de la ligne ce que je ne comprend pas

<?php


$dir = isset($_POST['dir']) ? $_POST['dir'] : '';
$fic = isset($_POST['fic']) ? $_POST['fic'] : '';
$dir = (!empty($dir)) ? $dir : '.';

if(!empty($fic)) {
if ($handle = opendir($dir)) {
while (false !== ($file = readdir($handle))) {
if($file == $fic) {

echo '<br/>le fichier est trouvé<br/>';

}
}

closedir($handle);
}
}
?>
<form action="<?php $_SERVER['PHP_SELF'];?>" method="POST" >
<p><label for="dir">répertoire :</label><input id="dir" type="text" name="dir" /></p>
<p><label for="fic">fichier :</label><input id="fic" type="text" name="fic" /></p>
<p><input type="submit" value="go" /></p>
</form>
A voir également:

4 réponses

123pierre Messages postés 48 Date d'inscription vendredi 13 mars 2009 Statut Membre Dernière intervention 28 janvier 2011 2
2 juin 2009 à 06:51
Hello,

$_POST['dir']
c'est ce que tu as recuperer du formulaire de la page precedente.
$_POST recupere les element d'un formulaire postée en POST (Contrairement a GET)
['dir']: C'est la valeure rentrée dans le champs appelée 'dir'

(false !== ($file = readdir($handle))):
$handle est une variable qui a ete cree plus haut et qui contient un fichier externe $dir. ($dir doit l'adresse du fichier)
> en gros la boucle est ouverte tant que le fichier ouvert $dir peut etre lu..

A+,

Pierre
0
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 58
2 juin 2009 à 07:41
En ce qui concerne la première portion de code mise en gras, je me demande si "débutant" n'avait pas plutôt un problème pour interprérer la structure avec point d'interrogation.

On appel ça un "opérateur ternaire".
Tu en trouveras une bonne présentation à cette page : PHP - Les structures conditionnelles

Mais pour résumer
$dir = isset($_POST['dir']) ? $_POST['dir'] : '';
revient à faire
if ( isset($_POST['dir']) ) $dir = $_POST['dir'] ;
else $dir = '';
0
juanou Messages postés 137 Date d'inscription vendredi 28 novembre 2008 Statut Membre Dernière intervention 23 août 2013 58
2 juin 2009 à 07:58
et quant à while (false !== ($file = readdir($handle))), on peut peut-être entrer dans le détail :

!== signifie "différent, et de type différent".
C'est un peu comme != (qui signifie "différent de"), à ceci près qu'on considère que 0 est différent de false et de null.
Ca évite parfois des confusions.

$file = readdir($handle) retourne le contenu du dossier $handle dans $file, mais un fichier à la fois.
La première fois que tu fais $file = readdir($handle), $file prendra la valeur du premier fichier, la deuxième fois du deuxième, etc. Et quand tous fichiers auront été passés en revue, $file prendra false pour valeur.
la structure while (false !== ($file = readdir($handle))) signifie donc que la boucle while va se répéter en attribuant à chaque fois à $file la valeur d'un des fichiers du dossier $handle, jusqu'à ce que tous les fichiers de $handle aient été examinés.

Voilà.
Ca te semble clair ?
0
bonjour,

oui c'est clair je vous remercie de votre aide
a bientôt
0