Page 1 sur 2
Afficher une variable dans une image php
Posté : 06 mars 2012, 13:49
par Switi
Bonjour, j'expose mon problème :
On upload un fichier -> on le retrouve sur la page d'accueil, avec une image (suivant le type de fichier que c'est)
J'aimerais afficher l'image avec le nom du fichier SUR l'image..
Voici mon code source de : image1.php
Code : Tout sélectionner
<?php
header('Content-type: image/png');
$img = imagecreatefrompng('images/FL.png');
$noir = imagecolorallocate($img, 0, 0, 0);
imagettftext($img, 20, 0, 15, 30, $noir, 'chopin_script.ttf', $lien);
imagepng($img);
?>
Là où je bug, c'est sur le $lien car cette variable est une variable appelée sur la page d'accueil :
Code : Tout sélectionner
foreach($fichier as $lien) {
echo "<a href=\"$dir_nom/$lien \"><img src=image1.php></a>";
else
echo "blablablalbabla";
}
Le problème c'est que si je mets "123" à la place de $lien, il y a marqué 123 sur l'image.. Sinon ça fait la petite icone comme quoi l'image ne peut être affichée.
Avez vous une solution svp ?
Re: Afficher une variable dans une image php
Posté : 06 mars 2012, 14:26
par Shenryu
Salut,
Il faut juste que ta variable $lien soit connue d'une manière ou d'une autre à l'endroit où tu crées ton image..
Si tu es capable de créer ton image à partir d'un nom, tu as juste à récupérer ce nom.. ?

(pas sûr d'avoir tout compris moi

)
++
Re: Afficher une variable dans une image php
Posté : 06 mars 2012, 14:36
par xTG
Il faut faire transiter la variable $lien dans l'url et la récupérer dans le tableau $_GET.

Re: Afficher une variable dans une image php
Posté : 06 mars 2012, 14:39
par Switi
Il faut faire transiter la variable $lien dans l'url et la récupérer dans le tableau $_GET.

Je me doutais, mais comment faire ? Et puis il faut une sécurité aussi car si on tape dans l'adresse ?lien=blablabla, faut que ça modifie rien ..
Pourrais-tu m'éclairer ? Ou me proposer un morceau de code ?
Merci
EDIT :
Comment je peux poster $lien dans image.php ?
$_POST['lien'] in /image.php ?
Re: Afficher une variable dans une image php
Posté : 06 mars 2012, 17:11
par xTG
Si ton but est de protéger la valeur vaut mieux passer par une variable de session dans ce cas.
Car tout ce qui transite par GET ou POST est forcement émis depuis le client et donc modifiable...
<?php
session_start();
$_SESSION['lien'] = 'http://mondomaine.com';
echo '<img src="image.php" alt="" />';
?>
<?php
session_start();
header('Content-type: image/png');
$img = imagecreatefrompng('images/FL.png');
$noir = imagecolorallocate($img, 0, 0, 0);
$lien = (isSet($_SESSION['lien'])) ? $_SESSON['lien'] : '';
imagettftext($img, 20, 0, 15, 30, $noir, 'chopin_script.ttf', $lien);
imagepng($img);
?>
Et si tu dois gérer plusieurs images sur une même page utilises un tableau et passes dans l'url l'index du lien correspondant.
Re: Afficher une variable dans une image php
Posté : 06 mars 2012, 18:11
par Switi
Ce que je voulais savoir, c'est comment envoyer un $_POST dans une autre page sans formulaire ?
Re: Afficher une variable dans une image php
Posté : 06 mars 2012, 19:12
par xTG
Tu ne peux pas, on peut à la rigueur passer par de l'Ajax pour simuler un formulaire mais tu n'auras pas de redirection du fait de la requête asynchrone.
Re: Afficher une variable dans une image php
Posté : 06 mars 2012, 19:31
par Switi
J'ai essayé avec ce que tu m'as donné, mais ça me fait toujours le même problème, ça me met l'icone comme quoi l'image peut pas etre affichée..
Re: Afficher une variable dans une image php
Posté : 06 mars 2012, 19:36
par xTG
Et si tu accèdes à l'image via son url directement dans le navigateur ?
De plus pour voir les erreurs PHP tu peux mettre en commentaire la fonction imagepng().
Re: Afficher une variable dans une image php
Posté : 06 mars 2012, 19:51
par Switi
Et si tu accèdes à l'image via son url directement dans le navigateur ?
De plus pour voir les erreurs PHP tu peux mettre en commentaire la fonction imagepng().
$lien = (isSet($_SESSION['lien'])) ? $_SESSON['lien'] : '';
Si je mets cette ligne en commentaire et que je change le texte $lien par "123" ça marche.
Si je la garde, quoi qu'il arrive, l'image ne s'affiche pas, et meme quand je met le texte en "123".
J'ai mi la fonction imagepng() en commentaire, il ne m'affiche aucune erreur.
Re: Afficher une variable dans une image php
Posté : 06 mars 2012, 20:03
par xTG
Ah oui il manque un "i" dans le nom de la variable.

Et si tu n'as pas d'erreur c'est que ta configuration PHP n'est pas configurée pour les afficher.
Re: Afficher une variable dans une image php
Posté : 06 mars 2012, 20:09
par Switi
Merci ! J'ai corrigé, le "i" de SESSION, il était furtif

Re: Afficher une variable dans une image php
Posté : 06 mars 2012, 20:14
par xTG
Mea culpa pour l'affichage des erreurs, il aurait fallu aussi commenter le header.

Re: Afficher une variable dans une image php
Posté : 06 mars 2012, 20:20
par Switi
Mea culpa pour l'affichage des erreurs, il aurait fallu aussi commenter le header.

Pas trop compris ce que tu voulais dire ! Mais oui apparait un autre problème : j'affiche plusieurs fois l'image donc avec du texte différent dessus..
Il faut donc faire une session_start() à chaque fois mais aussi finir cette session, c'est possible ?
Car si j'utilise session_destroy() il ne va pas m'afficher de texte sur les images..
Re: Afficher une variable dans une image php
Posté : 06 mars 2012, 20:40
par xTG
Non ça ne fonctionnera pas ainsi...
Il faut savoir que le PHP s'exécute côté serveur et le HTML côté client.
Donc lorsque le HTML s'affiche le PHP a déjà fini.
Mais une balise IMG fait une requête pour chaque image au serveur.
Donc si tu as deux images avec ce script on pourra dérouler le fonctionnement ainsi :
Exécution PHP
Affichage résultat HTML
Requête IMG 1 => Exécution PHP
Requête IMG 2 => Exécution PHP
En gros c'est comme si tu naviguais vers deux liens différents l'affichage des deux images.
Donc pour résoudre ce problème il faut utiliser un tableau de lien en session (comme je te l'avais proposé au début) et utiliser un paramètre dans l'appel du script image (GET) avec l'index du tableau contenant l'url.
Ainsi les liens sont toujours côté serveur et l'utilisateur ne peut pas les modifier.
Le pire qu'il puisse faire c'est de mettre un autre index mais il sera limité aux valeurs du tableau et ne pourra donc pas afficher n'importe quelle url.