Création d'image php

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 : Création d'image php

Re: Création d'image php

par grincheux32 » 19 juil. 2012, 08:40

Bonjour,
Merci à vous Zahnzao et xTG.
Vous m'avez bien aidé.

En fait, c'est bon, j'enregistre maintenant l'image AVEC les données.
L'erreur venait de mon header que j'ai modifié en :

Code : Tout sélectionner

header("Content-Disposition: Attachment;filename=signature.png"); header("Content-type: image/png");
J'ai trouvé ça dans les messages qui suivent les explications de http://fr2.php.net/imagepng
Zahnzao , j'ai bien conscience de tout ça et je vais modifier mon code en conséquence.

Merci encore à vous :D

Re: Création d'image php

par xTG » 18 juil. 2012, 21:20

Tu n'enregistres jamais ton image en fait actuellement.
Il faut renseigner le second paramètre de imagepng().
De base il vaut NULL ce qui force un affichage écran mais aucunement une sauvegarde sur disque.
http://fr2.php.net/imagepng

Re: Création d'image php

par Zahnzao » 18 juil. 2012, 21:13

Salut,

ce que xTG veux dire, c'est que si tu soumet un formulaire vide, ton script s’exécutera quand même avec du coup, des variables vides.

De même si tu arrive directement sur la page via l'adresse du navigateur ce sont des variables inexistantes qui seront utilisées.

Il faut inclure tout ton script dans une condition qui assure l'envoi du formulaire.

Aussi je te conseille d'utiliser empty() plutôt que isset(). Empty verifie si la variable existe mais aussi si elle est vide.

par exemple
if(!empty($_POST['nom']) && !empty($post['prenom'])){ // si tout les champs existent et ne sont pas vides
    $nom=$_POST['nom'];
    $prenom=$_POST['prenom'];
   //le reste de ton script
}else{ //si certains champs sont vides ou inexistants
   // script en cas de champs vides ou inexistants
}
Si un formulaire vide ou incomplet est soumis, c'est partie dans le else qui est executée.

;)

Re: Création d'image php

par grincheux32 » 18 juil. 2012, 16:22

Bonjour et merci
As-tu le teste "mon entreprise" ? La police arial14 est-elle valide ?
Oui, "Mon organisme" est affiché et les deux polices au format gdf sont valides.
Je précise que ça marche en affichage, ce n'est que quand j'enregistre l'image : dans ce cas je n'ai QUE "Mon organisme"
Aussi tu effectues ce script sans aucune condition à chaque chargement de la page.
Et surtout tu utilises des variables qui n'existent pas dans certains cas ($nom par exemple si pas de formulaire soumis).
En effet mais la page signature.php est la seule après avoir rempli le formulaire de la page index.php

Re: Création d'image php

par xTG » 18 juil. 2012, 16:14

As-tu le teste "mon entreprise" ? La police arial14 est-elle valide ?

Aussi tu effectues ce script sans aucune condition à chaque chargement de la page.
Et surtout tu utilises des variables qui n'existent pas dans certains cas ($nom par exemple si pas de formulaire soumis).

Création d'image php

par grincheux32 » 18 juil. 2012, 15:30

Bonjour,
Heureux de passer au php (j'étais avant utilisateur d'asp pour le travail), j'essaye de faire mes premières pages.
Je n'ai peut-être pas choisi le plus simple mais avec les pages dédiées au php, on y arrive.
Je cherche à créer une image sur laquelle seront inscrits les coordonnées d'une personne.
En fait j'y arrive et cette image (style carte de visite) s'ouvre sur une page après avoir indiqué tout ce que l'on veut sur un formulaire.
Le problème (et oui, il y en a un) c'est que quand j'enregistre cette image, je n'ai pas les données entrées dans le formulaire.
J'ai tout le reste, mais pas ce qui est passé par le formulaire...
Voici mon code et merci d'avancesi quelqu'un peut m'aider.

Code : Tout sélectionner

<?php if (isset( $_POST['nom'])) {$nom = $_POST['nom'];} if (isset( $_POST['prenom'])) {$prenom = $_POST['prenom'];} if (isset( $_POST['direction'])) {$direction = $_POST['direction'];} if (isset( $_POST['service'])) {$service = $_POST['service'];} if (isset( $_POST['telephone'])) {$telephone = $_POST['telephone'];} if (isset( $_POST['telecopie'])) {$telecopie = $_POST['telecopie'];} if (isset( $_POST['courriel'])) {$courriel = $_POST['courriel'];} $nomcomplet=$prenom." ".$nom; // Concaténation "Prénom NOM" header ("Content-type: image/png"); // On dit qu'on veut afficher une image png $image = imagecreatefrompng("images/signature.png"); // Localisation de l'image sur le serveur $couleur = imagecolorallocate($image, 93, 90, 111); // Couleur de la police d'écriture $arial14 = imageloadfont('polices/arial14.gdf'); // Chargement de la police Arial 14 $arial16 = imageloadfont('polices/arial16.gdf'); // Chargement de la police Arial 16 // Ecriture sur l'image imagestring($image, $arial14, 140, 10, stripslashes ($nomcomplet), $couleur); imagestring($image, $arial16, 140, 30, 'MON ORGANISME', $couleur); imagestring($image, $arial14, 140, 50, stripslashes ($direction), $couleur); imagestring($image, $arial14, 140, 70, stripslashes ($service), $couleur); imagestring($image, $arial14, 160, 90, $telephone, $couleur); imagestring($image, $arial14, 160, 110, $telecopie, $couleur); imagestring($image, $arial14, 160, 130, $courriel, $couleur); // Affichage de l'image imagepng($image); // Détruction de l'imagepour libérér imagedestroy($image); ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <meta name="description" content="Création de signature formalisée" /> <meta name="author" content="Philippe FOURMENT" /> <title>Signature de <?php echo$prenom; ?>&nbsp;<?php echo$nom; ?></title> <style type="text/css"> <!-- .link { font-family: Arial, Helvetica, sans-serif; font-size: 10pt; color: #333366; } .Style1 { font-family: Arial, Helvetica, sans-serif; font-size: 10pt; font-weight: bold; color: #333366; } .Style16 {color: #333366; font-size: 10pt; font-family: Arial, Helvetica, sans-serif; } .Style26 {color: #333366; font-size: 7pt; font-family: Arial, Helvetica, sans-serif; } .Style27 { color: #CCCC33; font-style: italic; font-family: Arial, Helvetica, sans-serif; font-size: 10px; font-weight: bold; } .Style29 {color: #333366; font-size: 10pt; font-family: Arial, Helvetica, sans-serif; font-style: italic; } a { text-decoration: none; color: #333366; } .Style31 {font-family: Arial, Helvetica, sans-serif; font-size: 10pt; font-weight: bold; color: #333366; } --> </style> </head> <body> </body> </html> <?php /*