IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Comment faire un captcha graphique ?


Sujet :

Langage PHP

  1. #1
    Inactif  
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Points : 16
    Points
    16
    Par défaut Comment faire un captcha graphique ?
    Bonsoir,

    Je souhaiterais savoir comment créer un captcha graphique. C'est-à-dire un captcha avec flou gaussien + option sonore. J'ai déjà réussi à créer un simple captcha mais celui-ci s'avère inefficace contre les robots du web.

    Je vous remercie pour vos réponses,

    je vous souhaite une bonne soirée.

  2. #2
    Membre averti
    Avatar de Dumbeldor
    Homme Profil pro
    Développeur Concepteur Banque postale / Ecole d'ingénieur Alternance
    Inscrit en
    Novembre 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Concepteur Banque postale / Ecole d'ingénieur Alternance

    Informations forums :
    Inscription : Novembre 2013
    Messages : 88
    Points : 301
    Points
    301
    Par défaut
    Salut,

    Tu peux nous envoyer le code de ton "simple" captcha ?
    Perso j'ai jamais rajouté l'option avec le sons car j'ai pas trouvé ça très utile. Mais en théorie c'est pas bien compliqué.
    Si tu veux je peux te pondre un petit code, mais avant j'aimerai bien voir comment tu as fais ton premier captcha pour respecter ta façon de programmer.
    N'oubliez pas de mettre un petit pouce vert si mon message vous a aidé !

  3. #3
    Inactif  
    Homme Profil pro
    Lycéen
    Inscrit en
    Octobre 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Octobre 2014
    Messages : 11
    Points : 16
    Points
    16
    Par défaut
    Bonjour, je vous transmets les codes php en trois fichiers : captcha.php, formulaire.php, vérification.php.

    Captcha.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    <?php
     
      function image($mot)
    {
            $largeur = strlen($mot) * 10;
            $hauteur = 20;
            $img = imagecreate($largeur, $hauteur);
            $blanc = imagecolorallocate($img, 255, 255, 255);
            $noir = imagecolorallocate($img, 0, 0, 0,);
            $milieuhauteur = ($hauteur / 2) - 8;
     
    imagestring($img, 6, strlen($mot) / 2 , $milieuhauteur, $mot, $noir);
    imagerectangle($img, 1, 1, $largeur - 1, $hauteur - 1, $noir); // La bordure.
     
    // j'ajoute un fond hachuré.
    for($x = 5; $x < $largeur; $x+=6)
    {
     Imageline($img, $x,2,$x-5,$hauteur ,$noir);
    }
     
    $couleur = Array(
    imagecolorallocate($img, 0x99, 0x00, 0x66),
    imagecolorallocate($img, 0xcc, 0x00, 0x00),
    imagecolorallocate($img, 0x00, 0x00, 0xCC),
    imagecolorallocate($img, 0x00, 0x00, 0xCC),
    imagecolorallocate($img, 0xBB, 0x88, 0x77),
     
    imageline($img, 2, $milieuhauteur + 8, $largeur - 2, $milieuhauteur + 8, $noir);
     
    imagepng($img);
    imagedestroy($img);
     
    }
     
    function nombre($n)
    {
            // je vérifie que le code est bien entré
            return str_pad(mt_rand(0,pow(10,$n)-1),$n, '0', STR_PAD_LEFT);
    }
     
    function captcha()
    {
    $mot = nombre(6);
    $_SESSION['captcha'] = $mot;
    Image($mot);
    }
     
    Header("Content-type: image/png");
    Captcha();
     
    ?>
    Vérification.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
     
    <?php
     
    session_start();
    function motliste()
    {
    $liste = array('mot1', 'mot2', 'mot3');
    return $liste[array_rand($liste)];
    }
     
    function captcha()
    {
    return motliste();
    }
     
    If(!empty($_POST['captcha']) && !empty($_POST['nom']))
    {
    If($_POST['captcha']) == $_SESSION['captcha'])
    echo 'captcha valide !';
    Else
    echo 'captcha invalide';
    }
    else
    echo 'Il faut remplir le champ approprié.';
     
    ?>
    formulaire.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <label for="captcha">
    Captcha
    </label>
    <input type="text" name="captcha" id="captcha" value="">
    <img src="captcha.php" alt="not-found">
    <input type="submit" name="captcha" class="submit" value="envoyer">
    Voila, j'espère que ça fonctionnera de votre côté. J'ai recopié le code que j'ai établi donc il y a peut-être des fautes entre temps mais ça peut vous donner l'idée du captcha que j'ai essayé de faire.
    Moi ça fonctionne en tous cas.

    Merci d'avance,
    bonne journée/soirée.

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 690
    Points : 20 211
    Points
    20 211
    Par défaut
    L'utilisation de solution éprouvée telles que recaptcha ou sweetcaptcha n'est pas envisageable ?

    Perso je suis pas trop pour les captcha (pénible pour les utilisateurs) mais plus pour le système du "honeypot" où on va piéger un robots en lui faisant remplir un champs particulier qu'un utilisateur humain ne verra pas (caché via css , javascript , ...)

    Pour répondre un peu plus à ta question tu peux ajouter du flou via imagefilter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    imagefilter($image, IMG_FILTER_GAUSSIAN_BLUR);
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre averti
    Avatar de Dumbeldor
    Homme Profil pro
    Développeur Concepteur Banque postale / Ecole d'ingénieur Alternance
    Inscrit en
    Novembre 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Landes (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Concepteur Banque postale / Ecole d'ingénieur Alternance

    Informations forums :
    Inscription : Novembre 2013
    Messages : 88
    Points : 301
    Points
    301
    Par défaut
    Ah pas bête ta méthode Grunk !
    On peut aussi poser une question simple comme : Le feu c'est chaud ou froid ?
    Je fais ça pour mon site et j'ai pas de soucis !
    N'oubliez pas de mettre un petit pouce vert si mon message vous a aidé !

Discussions similaires

  1. comment faire une interface graphique ?
    Par membreComplexe12 dans le forum C++
    Réponses: 12
    Dernier message: 12/03/2011, 08h22
  2. Comment faire un programme graphique en Visual C++?
    Par mehdi_scofield dans le forum VC++ .NET
    Réponses: 5
    Dernier message: 29/10/2008, 18h30
  3. Réponses: 3
    Dernier message: 29/04/2007, 18h17
  4. [Débutant] Comment faire une interface graphique ?
    Par hanane78 dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 29/12/2006, 10h43
  5. comment faire pour scrollbar graphique
    Par aliosys dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 07/09/2006, 10h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo