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

JavaScript Discussion :

Code de captcha en JavaScript


Sujet :

JavaScript

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut Code de captcha en JavaScript
    Bonsoir à tous,

    J'ai trouvé cette source qui ma fois est plutôt sympa visuellement mais je ne vois pas ou s'effectue la vérification du code ?
    voici le code :
    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
    53
    54
    55
    56
    <html>
    <head>
    <script language="javascript" type="text/javascript">
    function getCaptcha() {
        var chars = "0Aa1Bb2Cc3Dd4Ee5Ff6Gg7Hh8Ii9Jj0Kk1Ll2Mm3Nn4Oo5Pp6Qq7Rr8Ss9Tt0Uu1Vv2Ww3Xx4Yy5Zz";
        var string_length = 5;
        var captchastring = '';
        for (var i=0; i<string_length; i++) {
            var rnum = Math.floor(Math.random() * chars.length);
            captchastring += chars.substring(rnum,rnum+1);
        }
        document.getElementById("randomfield").innerHTML = captchastring;
    }
    </script>
    <style>
    #captcha
    {
    height:38px;
    background-image:url(overlay1.png);
    background-repeat:no-repeat;
    font-size:25px;
    position:relative;
    }
    #captcha_gen
    {
    left:10px;
    top:3px;
    position:absolute;
    Font-family:Monospace;
    font-weight:bold;
    text-align:justify;
    }
    </style>
    </head>
    <body onload="getCaptcha();">
    <form name="randform">
    <table style="border:1px solid #ecece4">
    <tr><td colspan="2" align="center"><strong>Contact Us Form</strong></td></tr>
    <tr><td>Name</td><td><input type="text" id="txtname"/></td></tr>
    <tr><td>Contact no</td><td><input type="text" id="txtno"/></td></tr>
    <tr><td>Message</td><td><textarea id="msg" style="width:155px"></textarea></td></tr>
    <tr><td>Verify Yourself</td><td><input type="text" id="txtcode"/></td></tr>
    <tr>
    <td>
    </td>
    <td>
    <div id="captcha">
    <div id="captcha_gen">
    <label align="center" id="randomfield"></label>
    </div>
    </div><input type="button" value="Refresh" onClick="getCaptcha();"/></td></tr>
    <tr><td colspan="2" align="center"><input type="button" value="Submit" onclick="fnsubmit()"/></td></tr>
    </table>
    </form>
    </body>
    <html>
    je m'attendais ( je débute en java ) à trouver ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ********* {
         return true;
         }
         alert ('Le résultat est faux !');
         return false;
          }
    et peut on reloader l'image sans recharger la page ?
    Je vous remercie par avance de vos éclaircissements et conseils
    cordialement scoubi

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    je pensais vérifier le captcha crée avec celui tapé dans le champ de saisie comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function Verif(){
            var d = document.getElementById('txtcode').value;
            var c = document.getElementById('getCaptcha').value;
            if (d == c) {
         return true;
         }
         alert ('Le captcha est faux !');
         return false;
          }
    mais ça ne fonctionne pas car je pense ne pas repérer les bonnes variables

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 559
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 559
    Points : 21 621
    Points
    21 621
    Par défaut
    Euh. Ça sert à quoi un captcha vérifié en JavaScript ?

    L'idée n'est-elle pas, au départ, d'empêcher les robots d'entrer ? Tu te doutes bien que les robots ne vont pas exécuter un bout de JavaScript qui essaie de les repousser...

  4. #4
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    il vaut voir la fonction fnsubmit
    mais je suis d'accord aucune vérifications côté client en javascript doit être considéré comme valide.
    Il faut tout vérifier côté serveur.
    Tout ce qu'un client envoie au serveur doit être vérifié par le serveur.
    La vérification côté client n'est là que pour sont confort.

    je constate que malheureusement de plus en plus on voit des site avec des widgets en tout genre qui offre au développeur des vérifications et celui-ci s'en contente. une bénédiction pour tous les crackers.
    les développeur oublient un peu trop que n'importe quoi peut se glisser entre leur pages web et leur serveur.

    un capcha en JS pour faire une démo d'un prototype d'IHM à un client pourquoi pas. mais au delà c'est un appel au piratage.

    A+JYT

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    Bonjour à vous deux et merci pour vos réponses,

    Si je me tourne vers le java c'est parce que je n'arrive pas à valider en php si le résultat est vrai ou faux.
    J'ai essayé une multitude de script, ils fonctionnent dans mon livre d'or mais quelque soit le résultat le message est quand même posté !
    car étant plus que débutant en php je n'arrive pas à programmer le return false et le return true.
    J'ai demandé une multitudes d'aide sur une multitudes de forums mais personne ne m'a dit bouges pas je vais t'expliquer comment par rapport à ton code gérer cet évènement, sauf une personne qui m'a dit qu'une partie devait être dans la page et l'autre sur le serveur.
    J'essaie donc de me retourner vers le java
    maintenant si vous pouvez me décoincer mon problème en php je suis preneur

  6. #6
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    le pincipe du captcha c'est que le message est posté
    le serveur récupère le post est vérifie la validité du message
    captcha mais ausi données
    si l'on des deux captcha où contenu est incorrect le message est refusé.
    en guise de réponse le form est alors réaffiché avec les données reçues, un nouveau captcha et des méssage d'erreurs.

    tu ne peux pas faire ça avec du javascript
    imagine que tu veuille le faire en deux temps
    tu envoie le à réponse au captcha au serveur indépendement du form
    le serveur teste est dit OK ou KO
    et en fonction tu envoie le message ou pas.

    un petit malin mets un point d'arrêt sur ton js coupe l'herbe sous le pied de l'envoie du captcha et mets directement ok dans la réponse.
    ton form est posté sans vérication.

    la seule solution qui marche c'est
    le serveur génère un captcha et garde côté serveur le résultat attendu.
    il envoie le html au client qui affiche le formulaire et l'image du captcha
    le client remplie le formulaire et réponds au captcha.
    il envoie le formulaire
    le serveur reçoit tout et vérifie le captcha
    si le captcha est ok il continue à traité le message
    s'il est ko il renvoie le form au client avec un nouveau captcha

    si tu cherche à n'importe quel moment du process à séparé le captcha du message tu ouvre une faille.
    A+JYT

  7. #7
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Points : 9 944
    Points
    9 944
    Par défaut
    Et on ne le dira jamais assez, Java et JavaScript n'ont rien à voir !

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    Bonjour sekaijin,
    Merci pour ta réponse, là où je coince c'est toujours en arrivant à ce point

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
      if (chk_crypt($_POST['code'])) 
         echo "Bravo";
         else echo "Erreur";
    ?>

    car il faut que je remplace le echo bravo et le echo erreur par envois le formulaire ou bloque tout
    et la c'est là brasse coulée !

    j'ai deux pages, une le guestbook.php qui affiche mon livre d'or et l'autre le writeguest.php qui écrit la valeur des trois variables dans cette dernière qui est un fichier txt.
    j'ai choisi d'utiliser le captcha Cryptographp v1.4.
    j'ai donc installé la programmation du captcha dans ma page guestbook et une vérification de ce dernier dans une page test.php, j'ai donc bien un retour bravo et erreur.
    il faudrait en cas d'un captcha validé que j'envoi mes trois variable nom, mail et message dans ma page writguest.php qui ce charge de créer le message. mais sans quitter ma page guestbook qui est la page de visualisation de mon livre d'or ( j'espères être assez clair !!! )
    Je te remercie de t'intéresser à mon problème
    cordialement scoubi

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    390
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 390
    Points : 78
    Points
    78
    Par défaut
    J'ai un petit peu avancé car au lieu de rediriger la vérification du captcha vers une autre page ( verif.php), je l'ai directement incéré dans ma page guestbook.php.
    Mon problème maintenant reste après le else stoper l'envoi du formulaire car quelque soit la valeur du captcha le message est envoyé, j'avais pensé mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Location: guestbook.php');
    pour bloquer l'envoi du message
    mais il refuse d'ouvrir la page et j'ai une erreur 404 car je pense que je doit créer une boucle infinie car en y réfléchissant bien, comme à l'arrivée sur la page le champ est vide il est forcément false !!!

  10. #10
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Bonjour,
    je pense qu'l te faut poser la question sur le forum php qui sera beacoup plus approprié.

    le mieux tu poste ta question sur le forum php en mettnat la partie de code php qui te pose problème
    puis tu viens ici et tu ferme celle-ci en mettant un lien vers l'autre.

    ainsi lorsqu'une d'autre personne visiteront le forum il comprendront


    A+JYT

Discussions similaires

  1. Code java dans du Javascript
    Par ahulane dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/05/2007, 09h44
  2. [PHP-JS] Equivalent du code PHP suivant en Javascript
    Par Sayrus dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 19/05/2007, 10h51
  3. Executer une portion de code uniquement si le javascript est actif
    Par Rakken dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 07/04/2007, 10h23
  4. Réponses: 2
    Dernier message: 07/07/2006, 21h11
  5. Deux code html choisi selon javascript
    Par franck.automaticien dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 30/06/2006, 09h28

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