Nom aleatoire pour image php/gd

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Nom aleatoire pour image php/gd

par Morgoth » 19 août 2008, 15:45

J'ai réussis grâce à votre aide.

Je vous suis très reconnaissant. Mille merci !

par @rthur » 18 août 2008, 11:11

Supprime ton header(...) à mon avis il ne sert à rien.
Après ton imagejpeg(...) ajoute
echo("bla bla");
[Note : ce message a été posté de manière anonyme avant d'être réattribué à son auteur]

par Morgoth » 18 août 2008, 01:41

Je m'excuse car je patauge un peu.
J'avoue vouloir jouer de la musique sans connaitre le solfège.


Si jamais vous avez la passience qui s'impose avec un crétin du codage, j'espère que vous pourrez être plus précis avec moi.

Je vous met en situation pour que l'on puisse mieux me préciser les choses :

Voici le module :
http://www.asmfoot.fr/darras/essai/

On rentre des noms des joueurs, on valide.

L'image est bien crée dans mon ftp, je connais personnellement l'adresse + le nom aléatoire, de ce côté, aucun problème.

Mais quand on valide, avec IE, une page blanche apparais (pour l'utilisateur) comme vous pouvez le constater.
Au final, cela ne sert a rien puisque l'utilisateur ne peut récupérer l'url de l'image, donc ne peut l'utiliser.


La page du formulaire :

Code : Tout sélectionner

<html> <head> <title>Notre page de test</title> </head> <body> Sélectionner le onze titulaire :<br /> <form action="./mon_image.php" method="get"> 1 - Gardien de But : <input type="text" name="Position1"><br /> 2 - Défenseur latéral (D) : <input type="text" name="Position2"><br /> 3 - Défenseur latéral (G) : <input type="text" name="Position3"><br /> 4 - Défenseur Central (G) ou Libéro : <input type="text" name="Position4"><br /> 5 - Défenseur central (D) ou Stoppeur : <input type="text" name="Position5"><br /> 6 - Milieu défensif : <input type="text" name="Position6"><br /> 7 - Milieu relayeur (D) : <input type="text" name="Position7"><br /> 8 - Milieu relayeur (G) : <input type="text" name="Position8"><br /> 9 - Avant-centre : <input type="text" name="Position9"><br /> 10 - Meneur de jeu : <input type="text" name="Position10"><br /> 11 - Attaquant de complément : <input type="text" name="Position11"><br /> <input type="submit" value="Voir"> </form> </body> </html>
La page de traitement d'image :

Code : Tout sélectionner

<?php if (isset($_GET['Position1']) && isset($_GET['Position2']) && isset($_GET['Position3']) && isset($_GET['Position4']) && isset($_GET['Position5']) && isset($_GET['Position6']) && isset($_GET['Position7']) && isset($_GET['Position8']) && isset($_GET['Position9']) && isset($_GET['Position10']) && isset($_GET['Position11'])) { header ("Content-type: image/png"); $image = imagecreatefrompng("442losange.png"); imagestring($image, 3, 25, 199, $_GET['Position1'], $blanc); imagestring($image, 3, 130, 357, $_GET['Position2'], $blanc); imagestring($image, 3, 130, 55, $_GET['Position3'], $blanc); imagestring($image, 3, 130, 156, $_GET['Position4'], $blanc); imagestring($image, 3, 130, 255, $_GET['Position5'], $blanc); imagestring($image, 3, 232, 206, $_GET['Position6'], $blanc); imagestring($image, 3, 317, 103, $_GET['Position7'], $blanc); imagestring($image, 3, 317, 303, $_GET['Position8'], $blanc); imagestring($image, 3, 511, 256, $_GET['Position9'], $blanc); imagestring($image, 3, 406, 206, $_GET['Position10'], $blanc); imagestring($image, 3, 511, 156, $_GET['Position11'], $blanc); $couleur_fond = ImageColorAllocate ($image, 255, 0, 0); imagejpeg ($image, 'images/442losange_'.uniqid().'.jpg'); } else { echo 'Les variables du formulaire ne sont pas déclarées.'; } ?>

Ainsi, que dois-je concrètement ajouter a ces pages pour voir apparaitre juste après avoir cliqué sur "voir" a la place de la page blanche un texte comme ceci :
Voici l'url de l'image, copiez/coller la pour l'utiliser sur le forum :
http://www.asmfoot.fr/darras/essai/imag ... e+variable aleatoire uniqid.jpg

par AB » 18 août 2008, 01:02


Ce que je souhaiterait c'est que a ce moment la s'affiche l'adresse de l'image crée genre:
Bravo, vous avez crée votre image, vous pourrez la trouver a l'adresser suivante :
http://adresse/nom_image.png
Bah si ton site se situe à l'adresse http://www.monsite.net
Si ton dossier image par rapport à la racine de ton site se nomme "dossier_images"
Si ton image se nomme "mon_image.jpg"

L'adresse pour atteindre cette image sera
http://www.monsite.net/dossier_images/mon_image.jpg

Comme c'est toi qui choisi le nom de l'image, tu peux la récupérer dans une variable quand tu génère l'identifiant unique ex : $nom_image = $identifiant.'jpg';

Pour construire ton URL il te suffira donc d'écrire

$url_image = 'http://www.monsite.net/dossier_images/'.$nom_image;

echo $url_image;


Sinon les liens indiqués par @rthur sont excellents, j'ai débuté avec ces sites :wink:

par @rthur » 18 août 2008, 00:37

http://www.phpdebutant.org
http://www.siteduzero.com

:arrow: Rubrique PHP, Gestion d'un Formulaire HTML en PHP ;)

par Morgoth » 18 août 2008, 00:34

Je crois que je ne me suit pas bien exprimé.

J'ai une page de formulaire en plus du code plus haut, qui permet aux gens de choisir le texte a implémenter.

Quand il clique sur "valider" pour créer l'image, une page blanche s'affiche car je n'ai encore rien codé pour proposer la "récupération".

L'image est crée, est conservé dans mon ftp (cest le but) et tout fonctionne, mais l'utilisateur ne récupère rien.

Ce que je souhaiterait c'est que a ce moment la s'affiche l'adresse de l'image crée genre:
Bravo, vous avez crée votre image, vous pourrez la trouver a l'adresser suivante :
http://adresse/nom_image.png
Comme cela, il suffit juste a l'utiliosateur de copier l'adresse. Il peut ainsi la mettre sur son forum avec les balises img du forum.

Donc effectivement, que l'adresse de l'image crée soit compliqué n'est pas un probleme puisqu'il va copier/coller cet URL. Le problème, c'est qu'il faut bien qu'on la lui affiche cette URL pour la copier/coller.

par AB » 18 août 2008, 00:26

En même temps si c'est pour faire du copier-coller peu importe que ce soit compliqué ou pas (cf les liens donnés par dailymotion et autres...).

Maintenant si tu veux que le nom soit plus significatif tu peux laisser au visiteur le soin de choisir le nom de son image et concaténer l'identifiant unique avec ce nom. L'adresse sera plus longue mais plus facile à trier en cas de besoin.

par Morgoth » 17 août 2008, 23:26

Génial, c'est magique,je te remercie beaucoup.
:D

Par contre, il me reste un dernier problème qui découle de celui résolu.

Quand l'utilisateur créer l'image, il n'a pas la possibilité de la réutiliser car l'adresse est de fait compliqué.

Comment faire pour, lors de la création, on puisse faire apparaître l'image bien sur pour vérifier visuellement le résultat, mais surtout un champs de texte avec l'adresse de l'image crée ?

Cela permettrait a l'utilisateur de copier/coller l'adresse pour la réutiliser ailleurs (sur site ou forum).

par @rthur » 17 août 2008, 18:02

Bonjour,

Cadeau :
:arrow: http://fr.php.net/uniqid
imagepng ($image, 'mon_image_'.uniqid().'.png');

Nom aleatoire pour image php/gd

par Morgoth » 17 août 2008, 17:00

Bonjour,
je suis en train de débuter en php en créant un générateur de texte sur image avec l'aide du php et de GD.
Je sollicite votre aide car je bloque à un étape.

Voici déjà mon code :

Code : Tout sélectionner

<?php if (isset($_GET['Position1']) && isset($_GET['Position2']) && isset($_GET['Position3']) && isset($_GET['Position4']) && isset($_GET['Position5']) && isset($_GET['Position6']) && isset($_GET['Position7']) && isset($_GET['Position8']) && isset($_GET['Position9']) && isset($_GET['Position10']) && isset($_GET['Position11'])) { header ("Content-type: image/png"); $image = imagecreatefrompng("442losange.png"); imagestring($image, 3, 25, 199, $_GET['Position1'], $blanc); imagestring($image, 3, 130, 357, $_GET['Position2'], $blanc); imagestring($image, 3, 130, 55, $_GET['Position3'], $blanc); imagestring($image, 3, 130, 156, $_GET['Position4'], $blanc); imagestring($image, 3, 130, 255, $_GET['Position5'], $blanc); imagestring($image, 3, 232, 206, $_GET['Position6'], $blanc); imagestring($image, 3, 317, 103, $_GET['Position7'], $blanc); imagestring($image, 3, 317, 303, $_GET['Position8'], $blanc); imagestring($image, 3, 511, 256, $_GET['Position9'], $blanc); imagestring($image, 3, 406, 206, $_GET['Position10'], $blanc); imagestring($image, 3, 511, 156, $_GET['Position11'], $blanc); $couleur_fond = ImageColorAllocate ($image, 255, 0, 0); imagepng ($image, 'mon_image.png'); } else { echo 'Les variables du formulaire ne sont pas déclarées.'; } ?>
Mon problème est le suivant :
Je souhaiterais créer des images tout en gardant les anciennes déjà crées.
Mais tout le problème viens du fait que l'image crée à toujours le même nom ('mon_image.png'). Donc la dernière image crée écrase la précédente.

Je suppose donc que je doit mettre une portion de code qui déterminerais un nom aléatoire à chaque image crée. Mais j'ai beau chercher, je n'arrive pas a trouver de méthode.

J'espère que vous pourrez m'aider.
Je vous remercie d'avance :wink: