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 :

Formulaire CAPTCHA Bdd


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 130
    Par défaut Formulaire CAPTCHA Bdd
    Bonjour,

    Depuis peu je suis envahi d'insciptions par des spam et robots.
    Je possède un formulaire dans lequel j'ai une fonction javascript qui vérifie si chams corrects.
    Si les champs sont corrects, j'appelle la page verif.php qui insére tous les champsd e formulaire dans une bdd.

    J'ai essayé d'intéger un catchpa dans mon formulaire pour éviter tout spammeur mais je ne suis jamais arrivé.

    Si quelqu'un pourrai m'aider, ca serai vachement sympa.

    Merci d'avance.

    Je vous monter mon code:
    la page inscription.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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
     
    <script>
    function check() {
    	var msg = "";
     
    		if (document.formulaire.login.value != "")	{
    		indexAroba = document.formulaire.login.value.indexOf('@');
    		indexPoint = document.formulaire.login.value.indexOf('.');
    		if ((indexAroba < 0) || (indexPoint < 0))		{
    		document.formulaire.login.style.backgroundColor = "#FF8900";
    			msg += "Le mail est incorrect\n";
    		}
    	}
    	else	{
    		document.formulaire.login.style.backgroundColor = "#FF8900";
    		msg += "Veuillez saisir votre mail.\n";
    	}
    if (document.formulaire.pwd.value == "*******")	{
    		msg += "Veuillez indiquez votre mot de passe\n";
    		document.formulaire.pwd.style.backgroundColor = "#FF8900";
    	}
     
     
    if (document.formulaire.nomGite.value == "")	{
    		msg += "Veuillez saisir le nom de votre location\n";
    		document.formulaire.nomGite.style.backgroundColor = "#FF8900";
    	}
     
     
    	if (msg == "") return(true);
    	else	{
    		alert(msg);
    		return(false);
    	}
    }
    </script>
     
     <form action="http://www.monsite.com/verif_test.php" method="post" enctype="multipart/form-data" name="formulaire"  onSubmit="return check();">
     
     
     
     
            <tr> 
              <td  height="25" colspan="2" class="titre_infos"><b>Authentification</b></td>
            </tr>
            <td class="descriptif_infos">Entrez votre mail *</td>
            <td> <input type="text" name="login" value="" id="login" maxlength="70" size="50" onKeyUp="javascript:couleur(this);"></td>
            <tr> 
              <td class="descriptif_infos">Entrez votre mot de passe * (8 caractères 
                maximum)</td>
              <td> <input  type="password" name="pwd" value="*******" id="pwd" maxlength="8" size="50" onKeyUp="javascript:couleur(this);"></td>
            </tr>
            <tr> 
              <td  height="25" colspan="2" class="titre_infos"><b>Inscription de votre 
                location</b></td>
            </tr>
            <td class="descriptif_infos">Titre de votre location</td>
            <td > <input type="text" name="nomGite" value="" maxlength="70" size="50" onKeyUp="javascript:couleur(this);"></td>
            <tr> 
              <td>&nbsp;</td>
            </tr>
            <tr> 
              <td class="descriptif_infos">Description</td>
              <td> <textarea name="descriptionGite" maxlength="300" cols="49" rows="8" onKeyUp="javascript:couleur(this);"></textarea></td>
            </tr>
            <tr> 
              <td class="descriptif_infos">Mots Clés (séparés par des virgules)</td>
              <td> <textarea name="motscles" maxlength="300" cols="49" rows="8" onKeyUp="javascript:couleur(this);"></textarea></td>
            </tr>
     
     
     
            <tr> 
              <td colspan="2" align="center"><input type="submit" onClick="verifForm(this.formulaire)" name="envoi" value="envoi!" ></td>
    Je ne vous ai pas mis le code en entier car page très longgue.

    Et voici ma page verif_test.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
    53
    54
    55
    56
    57
    58
    59
    60
     
     
     
    <?php // récupération des données du formulaires
    $login = $_POST['login'];
    $pwd = $_POST['pwd'];
     
     
     
    $nomGite = $_POST['nomGite'];
    $descriptionGite = $_POST['descriptionGite'];
    $motscles = $_POST['motscles'];
    $pays = $_POST['pays'];
    $regionGite = $_POST['regionGite'];
    $dptGite = $_POST['dptGite'];
     
    $comm = $_POST["commune"] ;
    	  $comm = preg_replace('/[\xe8-\xeb]/', 'e', $comm); 
    	  $accents = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ";
       $ssaccents = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn";
       $comm = strtr($comm,$accents,$ssaccents);
          $in = array('/', ' ', '?', '!', '.', ',', ':', "'", '&', '(', ')', '---', 'st');
       $out = array('-', '-', '', '', '', '', '', '-', 'et', '', '', '-', 'saint');
       $comm = str_replace($in, $out, $comm);
      $comm2 = strtolower($comm) ;
     
     
    $commune = $comm2;
    $adresse_commune = $_POST['adresse_commune'];
    $cp_commune = $_POST['cp_commune'];
    $nomProprio = $_POST['nomProprio'];
    $mailProprio = $_POST['mailProprio'];
    $telProprio = $_POST['telProprio'];
    $siteProprio = $_POST['siteProprio'];
    $capaciteGite = $_POST['capaciteGite'];
    $typeGite = $_POST['typeGite'];
     
     
     
     
     
    // connexion à votre base de donnée
    $base = mysql_connect ('', '', '');
    mysql_select_db ('', $);
     
    // on créer la requête SQL, pour ensuite l'envoyer
    $requete = "insert into gites values('','$nomGite','$descriptionGite','$motscles','$pays','$regionGite','$dptGite','$commune','$adresse_commune','$cp_commune','$nomProprio',
    '$mailProprio','$telProprio',...,
    ')";
     
    $requete2 = "insert into tbl_user values('','$login','$pwd')";
     
    mysql_query($requete);
    mysql_query($requete2);
     
    echo '<table width="490"><tr class="menu_menu2"><td width="450">';
    echo "Vos données ont été envoyées !"; 
    echo '</td></tr>';
    // fermeture de la connexion vers Mysql
    mysql_close(); ?>

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2007
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 28
    Par défaut
    salut

    Les robots sont donc capables de remplir tes champs et valider ton formulaire. Il y a une solution : utilise une image de confirmation. Il s'agit d'une image où il est dessiné un certain nombre de chiffres et lettres et à coté un champ text où on doit taper ce que les chiffres et lettres de l'image.

    Ca a l'air performant cela

    Amicalement
    Matt

  3. #3
    Membre confirmé Avatar de djedje37et28
    Profil pro
    Étudiant
    Inscrit en
    Septembre 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2005
    Messages : 224
    Par défaut
    sinon il y a une autre solution. Je sais pas si elle est très performante...
    c'est faire un champ bidon et le cacher en css.
    Lors du submit, tu vérifies si le champ est rempli ou non.
    je l ai fais sur un de mes formulaires.
    je sais pas si ca marche ( j ai pas eu encore de spam):
    j ai mis dans le formulaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <imput type="hidden" name="codepostal"  class="robot" value="" />
    et le css:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    .robot{
    display:none;}
    il y a surement mieux

  4. #4
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Citation Envoyé par newsainix Voir le message
    salut

    Les robots sont donc capables de remplir tes champs et valider ton formulaire. Il y a une solution : utilise une image de confirmation. Il s'agit d'une image où il est dessiné un certain nombre de chiffres et lettres et à coté un champ text où on doit taper ce que les chiffres et lettres de l'image.

    Ca a l'air performant cela

    Amicalement
    Matt
    C'est ce qu'il a justement essayé d'intégrer sans succès (les fameux captcha...).

Discussions similaires

  1. [SGBD] Traitement Données Formulaire Vers BDD Mysql
    Par Thierry8 dans le forum SQL Procédural
    Réponses: 10
    Dernier message: 30/03/2006, 00h22
  2. [SimpleXML] Générer un XML grâce à un formulaire (sans BDD)
    Par greg1386 dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 29/01/2006, 02h04
  3. formulaire ASP bdd access recherche
    Par ghita269 dans le forum ASP
    Réponses: 8
    Dernier message: 20/11/2005, 00h57
  4. [MySQL] Formulaire php + bdd = perte des sauts de ligne html ?
    Par sunshine33 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 03/10/2005, 12h19
  5. problème avec formulaire et BDD
    Par pmboutteau dans le forum ASP
    Réponses: 1
    Dernier message: 24/08/2005, 11h56

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