Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > Images > JpGraph
JpGraph Forum d'entraide pour la bibliothèque JpGraph permettant de manipuler des images en PHP. Avant de poster -> tutoriels JpGraph
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 14/01/2008, 20h41   #1
Rédacteur/Modérateur
 
Avatar de 12monkeys
 
Homme Dr. Peters
Webmaster
Inscription : novembre 2006
Messages : 3 630
Détails du profil
Informations personnelles :
Nom : Homme Dr. Peters
Âge : 35
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Webmaster
Secteur : Service public

Informations forums :
Inscription : novembre 2006
Messages : 3 630
Points : 6 232
Points : 6 232
Par défaut [JpGraph] Utiliser un captcha : récupérer le texte affiché

Bonsoir,

Je voudrais intégrer un captcha dans mon formulaire d'inscription, j'ai un peu regardé à gauche à droite et je suis tombé sur le code dans la faq.

Ce code marche bien... sauf :

je ne sais pas comment récupérer le texte qui s'affiche :

si je met la partie de code donnant le texte affiché dans la partie de code affichant l'image, soit dans <img src="img.php"> alors je ne peux pas l'utiliser dans le formulaire pour vérification..

mais si je le met dans le formulaire avant de faire appel à l'image, alors l'image ne s'affiche pas...

Comment faites vous, merci...
__________________
Vous débutez dans la creation de sites web : les bases du html et débuter avec les CSS
Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
Votez pour les messages qui vous ont aidés...
12monkeys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/01/2008, 22h21   #2
Futur Membre du Club
 
Inscription : décembre 2007
Messages : 57
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 57
Points : 15
Points : 15
salut voici ce que j'ai utilisé pour mon site facile a installé et a configuré.il y'en a pour tes gouts http://www.cryptographp.com/index.php?page=4&langue=fr
j'èspère que ca t'aidera.
sadigoun est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 18h37   #3
Rédacteur/Modérateur
 
Avatar de 12monkeys
 
Homme Dr. Peters
Webmaster
Inscription : novembre 2006
Messages : 3 630
Détails du profil
Informations personnelles :
Nom : Homme Dr. Peters
Âge : 35
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Webmaster
Secteur : Service public

Informations forums :
Inscription : novembre 2006
Messages : 3 630
Points : 6 232
Points : 6 232
Merci mais je connais déjà, j'ai essayé de le décortiquer mais j'ai pas tout compris....

Je préfère apprendre par moi même, alors si quelqu'un à une solution à me donner...

Merci.
__________________
Vous débutez dans la creation de sites web : les bases du html et débuter avec les CSS
Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
Votez pour les messages qui vous ont aidés...
12monkeys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 18h55   #4
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Voici un code que j'ai récemment utilisé :

Le captcha.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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
<?php 
    session_start(); 
 
    $length = 5; // Longueur de la chaîne générée en image 
 
    $string = ''; 
    for($i = 0; $i < $length; $i++)      //Création de la chaine qui sera affichée 
    { 
         $string .= chr(mt_rand(97, 122));    //Récupération aléatoire d'un caractères alphabétique minuscule 
    } 
 
    // Création de la zone image en fonction de la longueur de texte à afficher 
    $image = imagecreatetruecolor(30 * $length, 50); 
 
    // Création du fond de l'image 
    for($x = 0; $x < imagesx($image); ++$x) 
    { 
        for($y = 0; $y < imagesy($image); ++$y) 
        { 
            if (mt_rand(1,5) == 4 ) 
            { 
                $vred = mt_rand(0, 100); 
                $vgreen = mt_rand(0, 100); 
                $vblue = mt_rand(0, 100); 
            } 
            else 
            { 
                $vred = mt_rand(100, 150); 
                $vgreen = mt_rand(100, 150); 
                $vblue = mt_rand(100, 150); 
            } 
 
            // Allocation d'une couleur au fond 
            $color = imagecolorallocate($image, $vred, $vgreen, $vblue); 
 
            // Affichage d'un pixel ayant la couleur du fond 
            imagesetpixel($image, $x, $y, $color); 
 
            // Suppression de la couleur du fond allouée 
            imagecolordeallocate($image, $color); 
        } 
    } 
 
    // Création de la bordure 
    $vred = mt_rand(0, 240); 
    $vgreen = mt_rand(0, 240); 
    $vblue = mt_rand(0, 240); 
 
    // Allocation d'une couleur à la bordure 
    $color = imagecolorallocate($image, $vred, $vgreen, $vblue); 
 
    // Tracé de la bordure 
    imagerectangle($image, 0, 0, imagesx($image)-1 , imagesy($image)-1, $color); 
 
    // Suppression la couleur de la bordure allouée 
    imagecolordeallocate($image, $color); 
 
    // Création du texte 
    for($i = 0; $i < $length; $i++) 
    { 
        $vred = mt_rand(150, 240); 
        $vgreen = mt_rand(150, 240); 
        $vblue = mt_rand(150, 240); 
 
        $size = mt_rand(20, 30); 
        $angle = mt_rand(-10, 20); 
        $x = 13 + (20 * $i); 
        $y = mt_rand(30, imagesy($image) - 10); 
        $color = imagecolorallocate($image, $vred, $vgreen, $vblue); 
        $font = './font/posthuman.ttf'; 
 
        // Dessin du texte 
        imagettftext($image, $size, $angle, $x, $y, $color, $font, $string[$i]); 
 
        // Suppression de la couleur du texte allouée 
        imagecolordeallocate($image, $color); 
    } 
 
    //Enregistrement en session du captcha 
    $_SESSION['captcha-text'] = $string; 
 
    // Création de l'image complète au format PNG 
    header("Content-type: image/png");      
 
    //Envoi de l'image 
    imagepng($image);                     
?>
Et la vérification après soumission :
Code :
1
2
3
4
5
6
//Si soumission 
                    if(strtolower($_SERVER['REQUEST_METHOD']) == 'post') 
                    {                
                        //Et captcha correct 
                        if(isset($_SESSION['captcha-text']) && $_SESSION['captcha-text'] == $_POST['captcha']) 
                        {.....
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/01/2008, 19h39   #5
Rédacteur/Modérateur
 
Avatar de 12monkeys
 
Homme Dr. Peters
Webmaster
Inscription : novembre 2006
Messages : 3 630
Détails du profil
Informations personnelles :
Nom : Homme Dr. Peters
Âge : 35
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Webmaster
Secteur : Service public

Informations forums :
Inscription : novembre 2006
Messages : 3 630
Points : 6 232
Points : 6 232
Ok merci Kerod, je vais essayer ton code.

J'avais vaguement pensé à mettre l'info dans la session mais je me disais que ce ne serait pas très sécurisé (je ne sais pas pourquoi ?).

Le " if(strtolower($_SERVER['REQUEST_METHOD']) == 'post') " doit être une sécurité ?
__________________
Vous débutez dans la creation de sites web : les bases du html et débuter avec les CSS
Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
Votez pour les messages qui vous ont aidés...
12monkeys est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2008, 07h38   #6
Membre Expert
 
Avatar de eric.pommereau
 
Homme ERIC POMMEREAU
Ingénieur intégration
Inscription : décembre 2004
Messages : 683
Détails du profil
Informations personnelles :
Nom : Homme ERIC POMMEREAU
Âge : 38
Localisation : France

Informations professionnelles :
Activité : Ingénieur intégration
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : décembre 2004
Messages : 683
Points : 1 294
Points : 1 294
Hello,

Tu as raison de dire que dans ce cas là ce n'est pas évident.

La solution d'appel du script php directement dans l'image est un peu chiante puisqu'il faut passer par les paramètres GET ce qui revient à annoncer le moit de passe en clair.

Pourquoi simplement ne pas générer l'image dans le même script mais écrire cette image sur le disque pour qu'elle (avec un nom aléatoire) soit rappelée directement dans ton script?

Tu as aussi les librairies JpGraph et Artichow qui génèrent des images anti-spam....

@++
eric.pommereau est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/01/2008, 18h06   #7
Rédacteur/Modérateur
 
Avatar de 12monkeys
 
Homme Dr. Peters
Webmaster
Inscription : novembre 2006
Messages : 3 630
Détails du profil
Informations personnelles :
Nom : Homme Dr. Peters
Âge : 35
Localisation : France, Bas Rhin (Alsace)

Informations professionnelles :
Activité : Webmaster
Secteur : Service public

Informations forums :
Inscription : novembre 2006
Messages : 3 630
Points : 6 232
Points : 6 232
Tu as raison eric190, c'était bien ça mon problème...

Mais la solution de Kerod marche et me conviens pour l'instant.

Merci de votre aide...
__________________
Vous débutez dans la creation de sites web : les bases du html et débuter avec les CSS
Pas de MP pour des questions techniques ! Mode d'emploi du forum ; Règles ; Pensez à la balise code ; Pas de SMS !
Votez pour les messages qui vous ont aidés...
12monkeys 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 07h49.


 
 
 
 
Partenaires

Hébergement Web