Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
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 08/10/2007, 13h01   #1
Nouveau Membre du Club
 
Inscription : mars 2005
Messages : 130
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 130
Points : 27
Points : 27
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 :
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 :
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(); ?>
pod1978 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/10/2007, 10h29   #2
Nouveau Membre du Club
 
Inscription : septembre 2007
Messages : 28
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 28
Points : 28
Points : 28
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
newsainix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2007, 18h33   #3
Membre du Club
 
Avatar de djedje37et28
 
Étudiant
Inscription : septembre 2005
Messages : 220
Détails du profil
Informations personnelles :
Âge : 30
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : septembre 2005
Messages : 220
Points : 51
Points : 51
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 :
1
2
 
<imput type="hidden" name="codepostal"  class="robot" value="" />
et le css:
Code :
1
2
.robot{
display:none;}
il y a surement mieux
djedje37et28 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2007, 18h47   #4
Expert Confirmé

 
Avatar de Amara
 
Inscription : juillet 2004
Messages : 2 684
Détails du profil
Informations personnelles :
Localisation : France, Sarthe (Pays de la Loire)

Informations forums :
Inscription : juillet 2004
Messages : 2 684
Points : 2 910
Points : 2 910
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...).
__________________
Pas de questions techniques par MP, le forum est là pour ça et est plus efficace.

Orthographe : une connexion (avec un x), un langage (sans u), une requête (un seul t), 'une quote' (avec qu), une syntaxe (sans h)
Amara est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h02.


 
 
 
 
Partenaires

Hébergement Web