Récupérer une image en variable de session
Bonjour à toutes et à tous,
Objectif : Récupérer en tant que variable de session une image présente sur mon serveur.
Je souhaite afficher l'image récupérée sur le serveur suite à un upload que j'ai effectué.
Code:
1 2 3 4 5 6 7 8 9 10 11
|
<?php
//session_start();
/** script traitant la récupération et l'affichage de la vignette. Nous affichons les vignettes dans la div ayant l'id ajoutPhotos
Rappel : Nous sommes dans la zone du producteur ayant uploadé la vignette.
*/
//print_r($_SESSION['picture'][$_SESSION['id']]);
$dossier='vignettes/';
print '<img src="'.$dossier.$_SESSION['picture'][$_SESSION['id']].'">';
?> |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
<?php
//session_start(); //A session had already been started - ignoring session_start() in ..../zone_producteur.php
/** script permettant l'insertion dans la zone producteur des vignettes uploadées sur le serveur de base de données.
Objectif : Suite à l'insertion en base des vignettes uploadées, le producteur doit voir s'afficher la vignette
dans son espace. Les vignettes sont présentes physiquement dans un répertoire vignettes sur le serveur.
Il faut donc parcourir ce répertoire pour afficher la vignette en fonction du producteur, en effet chaque
nom de vignette est précédé d'un entier représentant l'id du producteur (e.g : 1_img5.jpg qui représente
une vignette uploadée par le producteur ayant l'id 1 dans la table des producteurs.)
*/
// création d'une structure de données vide pour stocker les vignettes
$container = array();
$dossier = "vignettes/"; // le répertoire contenant les vignettes uploadées
$dir = opendir($dossier); // on ouvre le répertoire contenant les vignettes
// TRAVERSER le répertoire en lecture
/* Explication du test conditionnel de la boucle while()
1 - Chaque vignette lue est placée dans une variable $vignettes afin qu'elle ne soit pas perdue
Rappel : un résultat qui n'est pas mis dans une variable est perdue !
2 - On compare ce qui est extrait de la lecture avec la valeur false (ce qui est pertinent !)
3 - On utilise l'opérateur de comparaison !== (différent)
On test que le contenu extrait est différent de false donc vaut true !
*/
while(false !== ($vignettes = readdir($dir))) {
// si le fichier n'est pas le répertoire courant et le répertoire parent
if($vignettes != '.' && $vignettes != '..') {
// alors je remplis le tableau avec les vignettes présentes dans le répertoire
$container[] = $vignettes;
}
} // fin while()
closedir($dir); // on ferme le répertoire
sort($container); // on trie le tableau ... mais ce n'est peut-être pas utile !
// on crée une variable de session pour pouvoir récupérer toutes les vignettes sans distinction
$_SESSION['picture'] = $container;
/* Explication du principe de récupération des vignettes
Si nous avons récupéré la variable de session $_SESSION['id'] (e.g ?id=2)
nous parcourons le tableau pour trouver toutes les vignettes ayant un nom préfixé par l'entier
représentant l'id du producteur.
*/
// si la variable $_SESSION est récupérée
if(isset($_SESSION['id'])) {
//$count = sizeof($container); // récupérer le nombre d'élément du tableau
$id = intval($_SESSION['id']); // on veut la valeur numérique entière
// PARCOURIR LE TABLEAU
// Astuce : La boucle foreach est recommandée pour parcourir un tableau en assignant chaque paire clé:valeur
// La clé correspond à l'identifiant de la vignette dans le tableau et la valeur au nom de la vignette
foreach($container as $cle=>$valeur) {
// on récupère le 1er caractère du nom de la vignette et on le compare à l'identifiant de session
$prCarVignette = substr($container[$cle],0,1);
if($prCarVignette == $id) {
// on crée une variable de session pour pouvoir récupérer les vignettes correspondant aux vignettes du producteur
// on se base sur l'identifiant de session qui correspond au premier caractère du nom du fichier
$_SESSION['picture'][$_SESSION['id']] = $prCarVignette;
//echo "<a href=\"gallery-image.php?img=$cle\">$valeur</a></br>";
include 'ajout_publierPhotos.php';
}
} // fin foreach()
} // fin if()
/*
// pour le debogage
echo '<pre>';
print_r($_SESSION['picture'][$_SESSION['id']]);
echo '</pre>';
*/
?> |
Merci d'avance,
Transact.