Précédent   Forum des professionnels en informatique > PHP > Outils > WAMP
WAMP Forum d'entraide sur WAMP (Windows Apache MySQL PHP) : installation, utilisation, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/11/2006, 19h18   #1
Membre habitué
 
Avatar de xenos
 
Inscription : septembre 2005
Messages : 402
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 402
Points : 140
Points : 140
Par défaut Wamp php gd2

Bonjour,

J'ai écris un code anti-bots qui fonctionne avec EasyPHP. J'ai migré vers Wamp (1.6.6.) et le code ne fonctionnait plus.

Lors de l'exécution du script sous Wamp aucune erreur n'est retournée, cependant l'image n'est pas crée.

Je crée l'image dans le formulaire :

Code :
1
2
3
4
<tr>
	<td><p>Retaper le code de l'image ci-dessous<br /><img src="img_verif.php" alt="image aleatoire" /></p></td>
	<td><p><input type="text" name="image" size="20" /> *</p></td>
</tr>
Je vérifie que le code est correct dans le formulaire_send :

Code :
1
2
3
4
$image = strtoupper(htmlentities($_POST['image']));
if($image == $_SESSION['nbr_aleatoire']) // si on a bien recopié le code de l'image
{
[...]
Voici le code de la page (img_verif.php) qui crée l'image :

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
<?
header ("Content-type: image/png"); // on crée img png
session_start();
 
$liste = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789";
$code = ''; // On créé une variable $code
$nbr_aleatoire = NULL;
while(strlen($nbr_aleatoire) != 5) {
        $nbr_aleatoire .= $liste[rand(0,37)]; 
}
 
$_SESSION['nbr_aleatoire'] = $nbr_aleatoire;
 
$image = imagecreate(88,31);
 
// premiere couleur --> fond de l'image
$blanc = imagecolorallocate($image, 255, 255, 255);
$noir = imagecolorallocate($image, 0, 0, 0);
$gris = imagecolorallocate($image, 200, 200, 200);
$gris_fonce = imagecolorallocate($image, 87, 87, 87);
 
// On charge d'abord les images
$source = imagecreatefrompng("img_verif.png"); //le logo est la source
$destination = $image; // destination
 
// Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
$largeur_source = imagesx($source);
$hauteur_source = imagesy($source);
$largeur_destination = imagesx($destination);
$hauteur_destination = imagesy($destination);
 
// On veut placer le logo en bas à droite, on calcule les coordonnées où on doit placer le logo sur la photo
$destination_x = $largeur_destination - $largeur_source;
$destination_y =  $hauteur_destination - $hauteur_source;
 
// On met le logo (source) dans l'image de destination (la photo)
imagecopymerge($destination, $source, $destination_x, $destination_y, 0, 0, $largeur_source, $hauteur_source, 30);
 
imagestring($image, 4, 23, 8, "$nbr_aleatoire", $noir); // imagestring($image, $police(taille 1-5), $x, $y, $texte_a_ecrire, $couleur);
 
ImageRectangle ($image, 0, 0, 87, 30, $gris_fonce); //ImageRectangle ($image, $x1, $y1, $x2, $y2, $couleur);
 
imagepng($image); // affichage de l'image
 
?>
Pour information, j'ai bien activé l'extension php_gd2 sous Wamp.

D'avance merci pour vos réponses.
xenos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2006, 02h28   #2
Membre confirmé
 
Homme Emmanuel Thierry
Ingénieur systèmes et réseaux
Inscription : décembre 2003
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Emmanuel Thierry
Âge : 24
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Enseignement

Informations forums :
Inscription : décembre 2003
Messages : 216
Points : 219
Points : 219
Fais un petit print_r(gd_info()); pour savoir s'il supporte le png...
Sékiltoyai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2006, 12h03   #3
Membre habitué
 
Avatar de xenos
 
Inscription : septembre 2005
Messages : 402
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 402
Points : 140
Points : 140
Avec print_r(gd_info()) Wamp me renvoie :

Citation:
Envoyé par Wamp
Array ( [GD Version] => bundled (2.0.28 compatible) [FreeType Support] => 1 [FreeType Linkage] => with freetype [T1Lib Support] => 1 [GIF Read Support] => 1 [GIF Create Support] => 1 [JPG Support] => 1 [PNG Support] => 1 [WBMP Support] => 1 [XPM Support] => [XBM Support] => 1 [JIS-mapped Japanese Font Support] => )
J'imagine que ça veut dire qu'il supporte bien le PNG.
xenos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2006, 21h36   #4
Membre confirmé
 
Homme Emmanuel Thierry
Ingénieur systèmes et réseaux
Inscription : décembre 2003
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Emmanuel Thierry
Âge : 24
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Enseignement

Informations forums :
Inscription : décembre 2003
Messages : 216
Points : 219
Points : 219
euh, vu que t'es en développement, je suppose, il faudrait que tu mettes dans tu php.ini la variable de configuration error_reporting à E_ALL, si ca n'est pas déjà fait. On saura au moins pourquoi il ne veut pas faire son boulot...
Sékiltoyai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2006, 22h30   #5
Membre habitué
 
Avatar de xenos
 
Inscription : septembre 2005
Messages : 402
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 402
Points : 140
Points : 140
J'ai rajouté error_reporting = E_ALL dans php.ini.

Mais il n'affiche que des warning concernant les requêtes mysql_query ...

Mais rien concernant les images
xenos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2006, 00h10   #6
Membre confirmé
 
Homme Emmanuel Thierry
Ingénieur systèmes et réseaux
Inscription : décembre 2003
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Emmanuel Thierry
Âge : 24
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Enseignement

Informations forums :
Inscription : décembre 2003
Messages : 216
Points : 219
Points : 219
Normal, ...
Enlève le header du fichier de l'image, et appelle le directement pour avoir les erreurs...
Sékiltoyai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2006, 00h41   #7
Membre habitué
 
Avatar de xenos
 
Inscription : septembre 2005
Messages : 402
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 402
Points : 140
Points : 140
Citation:
Envoyé par Sékiltoyai
Enlève le header du fichier de l'image
J'ai supprimé header ("Content-type: image/png"); d'img_verif.php

Citation:
Envoyé par Sékiltoyai
appelle le directement pour avoir les erreurs...
Je ne comprends pas ce que tu entends par appeler directement ... j'ai donc fait de différentes manière :

1) Je l'appel comme ça depuis le formulaire :

Code :
<img src="img_verif.php" alt="image aleatoire" />
2) Je lance le fichier img_verif.php :

Code :
.../index.php?page=img_verif
Dans ce cas là, j'ai une partie du code source qui s'affiche :

Citation:
fond de l'image $blanc = imagecolorallocate($image, 255, 255, 255); $noir = imagecolorallocate($image, 0, 0, 0); $gris = imagecolorallocate($image, 200, 200, 200); $gris_fonce = imagecolorallocate($image, 87, 87, 87); // On charge d'abord les images $source = imagecreatefrompng("img_verif.png"); //le logo est la source $destination = $image; // destination // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image $largeur_source = imagesx($source); $hauteur_source = imagesy($source); $largeur_destination = imagesx($destination); $hauteur_destination = imagesy($destination); // On veut placer le logo en bas à droite, on calcule les coordonnées où on doit placer le logo sur la photo $destination_x = $largeur_destination - $largeur_source; $destination_y = $hauteur_destination - $hauteur_source; // On met le logo (source) dans l'image de destination (la photo) imagecopymerge($destination, $source, $destination_x, $destination_y, 0, 0, $largeur_source, $hauteur_source, 30); imagestring($image, 4, 23, 8, "$nbr_aleatoire", $noir); // imagestring($image, $police(taille 1-5), $x, $y, $texte_a_ecrire, $couleur); ImageRectangle ($image, 0, 0, 87, 30, $gris_fonce); //ImageRectangle ($image, $x1, $y1, $x2, $y2, $couleur); imagepng($image); // affichage de l'image ?>
Malgré tout ça, je n'ai pas d'erreurs concernant l'image.
xenos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2006, 14h35   #8
Membre confirmé
 
Homme Emmanuel Thierry
Ingénieur systèmes et réseaux
Inscription : décembre 2003
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Emmanuel Thierry
Âge : 24
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Enseignement

Informations forums :
Inscription : décembre 2003
Messages : 216
Points : 219
Points : 219
Non tu appelles le script par http://localhost/chemin/img_verif.php, et tu regarde ce qu'il retourne...
Sékiltoyai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2006, 17h22   #9
Membre habitué
 
Avatar de xenos
 
Inscription : septembre 2005
Messages : 402
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 402
Points : 140
Points : 140
C'est ce que j'ai fait, mais il me renvoit ça comme texte :

Citation:
fond de l'image $blanc = imagecolorallocate($image, 255, 255, 255); $noir = imagecolorallocate($image, 0, 0, 0); $gris = imagecolorallocate($image, 200, 200, 200); $gris_fonce = imagecolorallocate($image, 87, 87, 87); // On charge d'abord les images $source = imagecreatefrompng("img_verif.png"); //le logo est la source $destination = $image; // destination // Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image $largeur_source = imagesx($source); $hauteur_source = imagesy($source); $largeur_destination = imagesx($destination); $hauteur_destination = imagesy($destination); // On veut placer le logo en bas à droite, on calcule les coordonnées où on doit placer le logo sur la photo $destination_x = $largeur_destination - $largeur_source; $destination_y = $hauteur_destination - $hauteur_source; // On met le logo (source) dans l'image de destination (la photo) imagecopymerge($destination, $source, $destination_x, $destination_y, 0, 0, $largeur_source, $hauteur_source, 30); imagestring($image, 4, 23, 8, "$nbr_aleatoire", $noir); // imagestring($image, $police(taille 1-5), $x, $y, $texte_a_ecrire, $couleur); ImageRectangle ($image, 0, 0, 87, 30, $gris_fonce); //ImageRectangle ($image, $x1, $y1, $x2, $y2, $couleur); imagepng($image); // affichage de l'image ?>
xenos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2006, 20h55   #10
Membre confirmé
 
Homme Emmanuel Thierry
Ingénieur systèmes et réseaux
Inscription : décembre 2003
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Emmanuel Thierry
Âge : 24
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Enseignement

Informations forums :
Inscription : décembre 2003
Messages : 216
Points : 219
Points : 219
Demande lui la source html et colle la en code ici...
joint aussi ton php.ini que je vérifie un truc :-/
Sékiltoyai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2006, 21h17   #11
Membre habitué
 
Avatar de xenos
 
Inscription : septembre 2005
Messages : 402
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 402
Points : 140
Points : 140
Merci Sékiltoyai de l'aide que tu m'apporte et pour ta patience !!!

Voici le code html de la page générée en lancant : http://localhost/chemin/img_verif.php :

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
<?
header ("Content-type: image/png"); // on crée img png
session_start();
 
$liste = "ABCDEFGHIJKLMNPQRSTUVWXYZ123456789";
$code = ''; // On créé une variable $code
$nbr_aleatoire = NULL;
while(strlen($nbr_aleatoire) != 5) {
        $nbr_aleatoire .= $liste[rand(0,37)]; 
}
 
$_SESSION['nbr_aleatoire'] = $nbr_aleatoire;
 
$image = imagecreate(88,31);
 
// premiere couleur --> fond de l'image
$blanc = imagecolorallocate($image, 255, 255, 255);
$noir = imagecolorallocate($image, 0, 0, 0);
$gris = imagecolorallocate($image, 200, 200, 200);
$gris_fonce = imagecolorallocate($image, 87, 87, 87);
 
// On charge d'abord les images
$source = imagecreatefrompng("img_verif.png"); //le logo est la source
$destination = $image; // destination
 
// Les fonctions imagesx et imagesy renvoient la largeur et la hauteur d'une image
$largeur_source = imagesx($source);
$hauteur_source = imagesy($source);
$largeur_destination = imagesx($destination);
$hauteur_destination = imagesy($destination);
 
// On veut placer le logo en bas à droite, on calcule les coordonnées où on doit placer le logo sur la photo
$destination_x = $largeur_destination - $largeur_source;
$destination_y =  $hauteur_destination - $hauteur_source;
 
// On met le logo (source) dans l'image de destination (la photo)
imagecopymerge($destination, $source, $destination_x, $destination_y, 0, 0, $largeur_source, $hauteur_source, 30);
 
imagestring($image, 4, 23, 8, "$nbr_aleatoire", $noir); // imagestring($image, $police(taille 1-5), $x, $y, $texte_a_ecrire, $couleur);
 
ImageRectangle ($image, 0, 0, 87, 30, $gris_fonce); //ImageRectangle ($image, $x1, $y1, $x2, $y2, $couleur);
 
imagepng($image); // affichage de l'image
 
?>
Le fichier php.ini est en pièce jointe; que j'ai renommé en php.txt vu que le forum n'accepte pas l'upload de fichiers en .ini ...
Fichiers attachés
Type de fichier : txt php.txt (41,6 Ko, 8 affichages)
xenos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/11/2006, 03h36   #12
Membre confirmé
 
Homme Emmanuel Thierry
Ingénieur systèmes et réseaux
Inscription : décembre 2003
Messages : 216
Détails du profil
Informations personnelles :
Nom : Homme Emmanuel Thierry
Âge : 24
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Enseignement

Informations forums :
Inscription : décembre 2003
Messages : 216
Points : 219
Points : 219
bon, c'est bien ce que je pensais, ...
Il faut soit que tu passe tous tes tags de <? à <?php, ce qui est une excellente habitude pour éviter les confusions entre php et autres langages (xml par exemple), soit que tu passe la directive short_open_tag à On dans ton php.ini, soit les deux. Personnellement, je te conseillerais la première solution, question de rigueur...
Sékiltoyai est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/11/2006, 10h40   #13
Membre habitué
 
Avatar de xenos
 
Inscription : septembre 2005
Messages : 402
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : septembre 2005
Messages : 402
Points : 140
Points : 140
Merci pour ton aide Sékiltoyai !

Maintenant tout fonctionne correctement.

Bon développement à tous.
xenos est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h40.


 
 
 
 
Partenaires

Hébergement Web