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 :

Captcha sur formulaire


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Par défaut Captcha sur formulaire
    Bonjour, je rencontre actuellement un problème d'adaptation de captcha sur un formulaire.

    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
    57
    58
    59
    60
    <?php
    	session_start();
    	$_SESSION['security_number']=rand(10000,99999);
    	$protection = 
    	urlencode($_POST['number_inserted_by_user']) . "&vs=" . 
    	urlencode($_SESSION['security_number']); 
     
    if(isset($_POST['email']) and isset($_POST['sujet']) and isset($_POST['message']) and isset($_POST['number_inserted_by_user']))
    {
            $destinataire = 'altordj@gmail.com';
            $email = htmlentities($_POST['email']);
            if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',str_replace('&amp;','&',$email)))
    		if(!preg_match("|<verification result=\"yes\"/>|", $protection))
            {
                    $sujet = 'Contact: '.stripslashes($_POST['sujet']);
                    $message = stripslashes($_POST['message']);
                    $headers = "From: <".$email.">\n";
                    $headers .= "Reply-To: ".$email."\n";
                    $headers .= "Content-Type: text/plain; charset=\"iso-8859-1\"";
                    if(mail($destinataire,$sujet,$message,$headers))
                    {
                            echo "<script type=\"text/javascript\">alert(\"Votre message a bien été envoyé.\"); window.location =\"index.php\";</script>";
                    }
                    else 
                    {
                            echo "<script type=\"text/javascript\">alert(\"Une erreur s'est produite, prière de réessayer.\"); window.location =\"index.php\";</script>";
                    }
            }
            else if(preg_match("|<authorization status=\"0\"|", $protection)) 
            {
                    echo "<script type=\"text/javascript\">alert(\"Le code de vérification et votre e-mail ne sont pas valides, prière de réessayer.\"); window.location =\"index.php\";</script>";
            }
            else if(!preg_match("|<verification result=\"yes\"/>|", $protection))
            {
                    echo "<script type=\"text/javascript\">alert(\"L'e-mail que vous avez entré est invalide.\"); window.location =\"index.php\";</script>";
            }
    }
    else
    {
    ?>
        <p id="08">
    <ul class="cont1">
    <form action="" method="post">
            <fieldset>
            <legend>Formulaire de contact</legend><BR>
            <label for="email" style="display:inline-block;width:100px;"><strong>Votre Email:</strong></label> <input type="text" name="email" id="email" /><br />
            <label for="sujet" style="display:inline-block;width:100px;"><strong>Sujet:</strong></label> <input type="text" name="sujet" id="sujet" /><br />
            <label for="message"><strong>Message:</strong></label><br />
            <textarea cols="70" rows="4" name="message" id="message"></textarea><br />
            <label for="number_inserted_by_user" style="display:inline-block;width:100px;">
    		<strong><img src="script/image.php" alt="well, this is out capcha image" /></strong></label> <input type="text" name="number_inserted_by_user" id="number_inserted_by_user" /><br />		
            <input type="submit" value="Envoyer" />
        </fieldset>
    </form>
    <BR>
    </ul>
    	</p> &nbsp
    <?php
    }
    ?>
    D'avance merci.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Et ton problème est ... ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Et ton problème est ... ?
    Que le code soit juste ou pas le mail part et les messages ne correspondent pas au statut (si le code est ou et/ou si le mail est valide).

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Est-il normal que tu ais 2 ifs à la suite ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',str_replace('&amp;','&',$email)))
        if(!preg_match("|<verification result=\"yes\"/>|", $protection))
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2013
    Messages : 11
    Par défaut
    Ah non c'était pas normal...
    J'ai corrigé.

    Cependant le mail par quel que soit ce que je rentre comme code captcha :-(

  6. #6
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    session_start();
    $_SESSION['security_number']=rand(10000,99999);
    $protection = urlencode($_POST['number_inserted_by_user']) . "&vs=" . urlencode($_SESSION['security_number']);
    Tu réinitialises ton numéro de sécurité quoiqu'il arrive ? Du coup, comment tu conserves l'ancien pour le comparer à celui envoyé en POST ?

    De même, tu as vu que tu as une condition négative ici ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!preg_match("|<verification result=\"yes\"/>|", $protection))
    Autrement dit, le même test est fait ligne 11 et ligne 31

    Dernier point : tu devrais afficher des traces pour voir ce que tu fais, notamment un var_dump($protection) t'aiderait bien
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [phpBB] Captcha sur formulaire d'inscription à un forum phpbb depuis un autre site
    Par casimirine dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 04/12/2014, 19h46
  2. Réponses: 19
    Dernier message: 26/01/2006, 09h44
  3. Test sur formulaire avec liste des erreurs
    Par Nicos77 dans le forum Langage
    Réponses: 37
    Dernier message: 17/11/2005, 11h22
  4. Problème: condition sur formulaire dans requête
    Par decour dans le forum Access
    Réponses: 1
    Dernier message: 18/10/2005, 00h27
  5. Glisser déposer sur formulaire
    Par norvel dans le forum Access
    Réponses: 5
    Dernier message: 03/10/2005, 12h20

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