PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 25-03-2010 10:05:47

Sq78
Membre
Inscription : 13-05-2009
Messages : 47

Caracteres * dans la balise <img src>

Bonjour,

Soit ce petit morceau de code

                <?php
                // **************  Nombre de photos du repertoire  *****************
                $nb_vignettes = 0;
                $handle = opendir("".$_GET['chemin']."/".$_GET['zenith']."" );
                while($file = readdir($handle)) {
                $nb_vignettes += 1;
                }
                $nb_vignettes -= 2;     // on enleve . et ..
                // **************  Nombre de photos du repertoire  *****************
                for($i=0;$i < $nb_vignettes/2;$i++){
                if ($i<10){$i="0$i";}
                echo "<a href='setequipe.php?abrev=".$_GET['abrev']."&photo=../".$_GET['chemin']."/".$_GET['zenith']."/".$_GET['abrev']."_n".$i.".jpg'><img src='".$_GET['chemin']."/".$_GET['zenith']."/".$_GET['abrev']."_n".$i."_small.jpg' border='0' width='100' height='75'></a>\n";
                }
                ?>

Ca fonctionne très bien dans le cas où $_GET['chemin'] et $_GET['zenith'] (que je récupère d'une page précédente) ont des valeurs figées. Ce qui est le cas.
Ca se complique pour le nom des images. Je suis obligé de toutes les renommer pour avoir des noms qui collent avec $abrev et $i. Dans mon cas, je suis obligé de renommer mes photos xxxx_n00.jpg, xxxx_n01.jpg, xxxx_n02.jpg, ce qui est fastidieux.
J'aimerais donc savoir s'il y a une solution pour afficher une liste complète d'images, quelque soit leur nom ?
Pour les problèmes de sécurité du lien entre autres, je suis entrain de le modifier...
Merci d'avance de vos réponses

Hors ligne

#2 25-03-2010 10:35:39

moogli
Modérateur
Inscription : 08-05-2009
Messages : 336
Site Web

Re : Caracteres * dans la balise <img src>

salut,

1/ ne surtout pas utiliser $_GET comme ça sans vérification (que ce passe t'il si ont met /USR ou /BIN dans to url ?).
donc tu commence par faire un if (is_dir('le chemin de base de ton site web'.$_GET['chemin'])) par exemple.
Le mieux est ne pas donner les noms dans l'url ou un formulaire mais par exemple de les avoir en base de donnée et de balader des id les référençant.
2/ pour afficher un contenue je te conseil la fonction glob cette fonction va te donner un tableau avec les fichiers correspondant au motif que tu lui passera. Attention cette fonction est casse sensitive. En gros JPG c'est pas jpg wink

Pour le reste tu remplace tes for par un foreach et roulez jeunesse wink

@+


Il en faut peu pour être heureux pompompompompompompompompompompom

Hors ligne

#3 27-03-2010 11:10:21

Sq78
Membre
Inscription : 13-05-2009
Messages : 47

Re : Caracteres * dans la balise <img src>

Bonjour,
Ta solution fonctionne mais maintenant je suis confronté à un autre problème.
Je vais essayer d'être clair...
J'ai un répertoire comportant des images et des vignettes correspondant aux images. Ex: image000.jpg, image001.jpg... et image000_small.jpg, image001_small.jpg...
Chaque image a sa vignette correspondante.
Je veux récuperer le nom de l'image, pour la mettre dans un cookie, et pour celà je veux faire afficher les vignettes correspondantes dans un bandeau.
Voici le code

                <?php
                $vignette=array();
                foreach (glob("".$_GET['chemin']."/".$_GET['zenith']."/*.jpg") as $filename) {
                $vignette[]=explode('.jpg',$filename);
                echo "<a href='setequipe.php?abrev=".$_GET['abrev']."&photo=$filename'><img src='".$vignette[]."_small' border='0' width='100' height='75'></a>\n";
                 }
                ?>

Ligne foreach: je prends chaque nom d'image et je les mets dans $filename
ligne suivante: j'enlève l'extension au nom des fichiers
ligne suivante: Je veux faire afficher les vignettes correspondant aux images suivies de "_small" et c'est là que ça cloche. J'ai cette erreur: Fatal error: Cannot use [] for reading
Je ne suis même pas sur que la ligne $vignette[]=explode('.jpg',$filename); soit bonne...
Quelqu'un peut m'aider svp ?

Hors ligne

#4 27-03-2010 15:55:27

xTG
GrandGourou
Inscription : 18-06-2009
Messages : 1 127
Site Web

Re : Caracteres * dans la balise <img src>


$vignette=explode('.jpg',$filename); // Créé un tableau dont le premier indice contient le nom du fichier
// Il faut donc utiliser le premier indice dans le src :
echo "<a href='setequipe.php?abrev=".$_GET['abrev']."&photo=$filename'><img src='".$vignette[0]."_small' border='0' width='100' height='75'></a>\n";

Mais le explode dans un tel endroit est bizarre d'utilisation. Pour ma part j'aurai utilisé un str_replace() afin de supprimer l'extension.

Dernière modification par xTG (27-03-2010 15:56:14)

Hors ligne

Pied de page des forums