AccueilAideRechercherIdentifiez-vousInscrivez-vous

Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
21 Mai 2012 à 22:03:40

Connexion avec identifiant, mot de passe et durée de la session
Rechercher
    avancée

News

Stats
8763 Messages dans 1087 Fils de discussion par 1000 Membres
Dernier membre: totor 94
+  PHP Astux
|-+  Langages Web
| |-+  PHP, ASP ... (serveur)
| | |-+  [Réglé] Formulaire et toute simple option antispam
Pages: [1] 2   Bas de page
Imprimer
Auteur Fil de discussion: [Réglé] Formulaire et toute simple option antispam  (Lu 1367 fois)
jp
Membre Junior
**
Messages: 73


« le: 29 Novembre 2010 à 11:06:48 »

Bonjour tlm,

Je souhaiterais ajouter juste au dessus du bouton "Envoyer" une checkbox demandant au posteur de cocher s'il n'est pas un robot.

Code:
echo ' <p>'."\n";
echo '         <label for="chkboxaspam">Anti spam :</label>'."\n";
               echo '          <input type="checkbox" name="chkboxaspam" />&nbsp;&nbsp; Je confirme que je suis un &ecirc;tre humain, et pas un robot spammeur.'."\n";
echo ' </p>'."\n";

Afin que si cette checkbox n'est pas cochée, ça renvoi le message d'erreur déjà intégré en ce formulaire.

Cette page est visible en "contact7.php" seul Laulau le sait  Cool

Le code hautement secret  Roulement des yeux est visible en "laurent7.txt" (extension .TXT hein)

Merci de toute aide, car je peux gérer de cette façon des champs, mais pas ce genre d'objet sous ce langage.
« Dernière édition: 29 Novembre 2010 à 19:12:55 par jp » Journalisée
laudu60100
Membre Complet
***
Messages: 119


« Répondre #1 le: 29 Novembre 2010 à 17:42:34 »

Bonjour tlm,

Je souhaiterais ajouter juste au dessus du bouton "Envoyer" une checkbox demandant au posteur de cocher s'il n'est pas un robot.

Code:
echo ' <p>'."\n";
echo '         <label for="chkboxaspam">Anti spam :</label>'."\n";
               echo '          <input type="checkbox" name="chkboxaspam" />&nbsp;&nbsp; Je confirme que je suis un &ecirc;tre humain, et pas un robot spammeur.'."\n";
echo ' </p>'."\n";

Afin que si cette checkbox n'est pas cochée, ça renvoi le message d'erreur déjà intégré en ce formulaire.

Cette page est visible en "contact7.php" seul Laulau le sait  Cool

Le code hautement secret  Roulement des yeux est visible en "laurent7.txt" (extension .TXT hein)

Merci de toute aide, car je peux gérer de cette façon des champs, mais pas ce genre d'objet sous ce langage.


Ok, je te fais ça et je t'envoie tout ça en Mp Clin d'oeil
« Dernière édition: 29 Novembre 2010 à 17:47:16 par laudu60100 » Journalisée
laudu60100
Membre Complet
***
Messages: 119


« Répondre #2 le: 29 Novembre 2010 à 18:20:41 »

C'est fait !  Clin d'oeil
Journalisée
jp
Membre Junior
**
Messages: 73


« Répondre #3 le: 29 Novembre 2010 à 18:36:28 »

Laurent, tout est impec du premier coup !  Cool

Là je crois que je suis comblé  Grima&ccedil;ant

Les robots n'ont qu'à bien se tenir.

Merciiiiiii ! et encore bravo  Grima&ccedil;ant
Journalisée
laudu60100
Membre Complet
***
Messages: 119


« Répondre #4 le: 30 Novembre 2010 à 11:58:10 »

Laurent, tout est impec du premier coup !  Cool

Là je crois que je suis comblé  Grima&ccedil;ant

Les robots n'ont qu'à bien se tenir.

Merciiiiiii ! et encore bravo  Grima&ccedil;ant
En réfléchissant, je ne sais pas trop si ça peut bloquer un robot, pourquoi ??
Parce que déjà les robots écrivent automatiquement dans les champs : ils écrivent dans le "value".
Pour les chekbox, il suffit d'écrire true dans "checkbox".
Bref, peut être que ça peut marcher, mais j'en sais trop rien sur le fonctionnement des robots, attendons l'avis du spécialiste !  Sourire
Journalisée
Matthieu
Administrateur
Membre Héroïque
*
Sexe: Homme
Messages: 3461


Unreal Power...


WWW
« Répondre #5 le: 30 Novembre 2010 à 20:24:32 »

Sans voir le traitement dudit code, ça me semble difficile à dire. Mais il est clair qu'un champ (même caché) peut être lu par un robot.

En réalité, le $_POST est tellement insécurisé que moi, depuis mon site, je peux créer un formulaire dont le "action" est ta page PHP, en envoyant tout ce que je veux ...
Journalisée

laudu60100
Membre Complet
***
Messages: 119


« Répondre #6 le: 01 Décembre 2010 à 13:44:43 »

En réalité, le $_POST est tellement insécurisé que moi, depuis mon site, je peux créer un formulaire dont le "action" est ta page PHP, en envoyant tout ce que je veux ...
Ouai, quand on fait un traitement php, faut penser à ça. N'importe qui peut faire la page html dont le action est cet page.
Moi, pour régler ce problème, je me débrouille avec les $_SESSION.
« Dernière édition: 01 Décembre 2010 à 13:47:42 par laudu60100 » Journalisée
jp
Membre Junior
**
Messages: 73


« Répondre #7 le: 02 Décembre 2010 à 10:26:37 »

Sans voir le traitement dudit code, ça me semble difficile à dire. Mais il est clair qu'un champ (même caché) peut être lu par un robot.

En réalité, le $_POST est tellement insécurisé que moi, depuis mon site, je peux créer un formulaire dont le "action" est ta page PHP, en envoyant tout ce que je veux ...

Salut les copains,

Et concrètement, ça peut donner quoi au pire ?  Huh

@+
Journalisée
jp
Membre Junior
**
Messages: 73


« Répondre #8 le: 02 Décembre 2010 à 12:24:51 »

En réalité, le $_POST est tellement insécurisé que moi, depuis mon site, je peux créer un formulaire dont le "action" est ta page PHP, en envoyant tout ce que je veux ...
Ouai, quand on fait un traitement php, faut penser à ça. N'importe qui peut faire la page html dont le action est cet page.
Moi, pour régler ce problème, je me débrouille avec les $_SESSION.

Hello Laulau  Sourire

Tu veux dire que tu remplaces les "$_POST" contre des "$_SESSION" ?

@+
Journalisée
laudu60100
Membre Complet
***
Messages: 119


« Répondre #9 le: 02 Décembre 2010 à 16:45:06 »

Citation
Et concrètement, ça peut donner quoi au pire ?  Huh
Heu tu peux recevoir 3000 mails à la minute si quelqu'un a l'idée !  Grima&ccedil;ant
Mais je crois que le spam abusif est puni par la loi non ?
Pss, si tu veux, je te fais la chose mais en moins pire ! si tu veux voir  Grima&ccedil;ant Grima&ccedil;ant


Enfin, par exemple, enregistre sur ton burreau ce code en appellant la page comme tu veux mais .html, tu vas comprendre de quoi Matthieu parlait :
Code:
<form method="post" action="http://www.lalimacefolle.com/contact.php">
<input type="text" name="nom"><BR>
<input type="text" name="email"><BR>
<input type="text" name="objet"><BR>
<textarea name="message"></textarea><BR>
<input type="checkbox" name="chkboxaspam" CHECKED><BR>
<input type="submit" name="envoi">
</form>



Citation
Tu veux dire que tu remplaces les "$_POST" contre des "$_SESSION" ?
Non, ça ne marcherait plus. Lorsqu'on valide un quelconque formulaire de method="POST", les champs se stockent dans le tableau $_POST sur la page du action du formulaire.

C'est un peu compliquer pour les $_SESSION[""] (si tu ne sais pas ce que c'est => ici)
Voila ce que je fais :
Lorsqu'on est sur la 1er page ça crée la session 1.
Puis dans la 2em pages (traitement.php) il faut que la session 1 existe pour exécuter le traitement puis la session se supprime et une autre se crée. La 2em page se charge que si la 2em session nm'existe pas come ça, il faut que les utilisateurs ferment leur navigateur ou attendent 30 mins pour refaire marcher le traitement.

C'est bof mais c'est toujours ça...
Je ne sais même pas si il existe La Solution de ce problème.


L'importance est surtout et à chaque fois, d'utiliser ça pour ramasser du $_POST[""]
Code:
$text = htmlspecialchars($_POST["xxxx"], ENT_QUOTES);
(j'espère que ce truc la n'a pas de faille)
Pour quoi est-il tres tres important ? Car il remplace  "<" et ">" respectivement par "&lt;" et "&gt;". (il ne fait pas que ça mais c'est ça le plus important) Comment ça, on ne peut pas écrire de balise html (qui ne sont pas tres tres dangereuses) et ni de balise php (qui elles, peuvent elles mortel pour le site)
Si tu veux un exemple concret fait des testes avec ce code :
Code:
<form action="" method="POST">
<textarea name="JUJU" style="width:300px;height:100px"></textarea
<br>
<input type="submit">
</form>

<?php
if (isset($_POST["JUJU"]))
{
$Message $_POST["JUJU"];
fwrite(fopen("Teste_Laurent.php"'a'),"<div style='Border:1px Solid'>".$Message."</div><br>");
echo 
"<script>window.location=''</script>";
}
?>
Appelle cette page : Teste_Laurent.php sinon, ça ne marche pas.
Dans ce script, il n'y a pas le code important
Code:
$text = htmlspecialchars($_POST["xxxx"], ENT_QUOTES);
c'est volontaire.
Tu vas voir ce qu'il va se passer.

D'abord écrie dans le textarea et valide :
Code:
Salut !
Tu as compris ce que fais le script.
Profitons qu'il n'y ai pas de sécurité :
écrie dedans :
Code:
<span style="color:#FF0000">Salut !</span>
Balise html, tu vois, ce n'est pas méchant lorsqu'on voit le resultat.
Sinon ya un peu plus mechant, mais pas si grave que ça :
Code:
<script>alert('Coucou !')</script>
Bref, ce n'est pas tres tres vilain les balises html.

Passons aux balises php :
écrie dedans :
Code:
<?php echo "Salut !"?>
Bon, pas tres méchant.
Maintenant écrie ça :
Code:
<?php unlink("Teste_Laurent.php"); ?>
Ce code, supprime tout simplement la page...
Et on peut supprimer tout les fichiers de ton site ou alors, créer une page pour soit...

Bref, il est surtout la, le danger.

Refais tout les testes avec cette fois la sécurité en remplacement le :
Code:
$Message =$_POST["JUJU"];
par :
Code:
$Message = htmlspecialchars($_POST["JUJU"], ENT_QUOTES);
Et tu vas voir comment c'est pratique.
« Dernière édition: 02 Décembre 2010 à 17:42:53 par laudu60100 » Journalisée
jp
Membre Junior
**
Messages: 73


« Répondre #10 le: 02 Décembre 2010 à 19:21:55 »

Whaouuuuu ! merci Laurent de cet éclairage, faut que je regarde ça calmement à tête reposée.

Mais je te signale que la case à cocher ne se coche pas, alors pas d'envoi du formulaire  Clin d'oeil

A moins que tu y arrives, dis-moi...

Interéssant ton exposé.

@+
Journalisée
jp
Membre Junior
**
Messages: 73


« Répondre #11 le: 02 Décembre 2010 à 19:45:33 »

Laulau, oui mais alors suffit d'appliquer ta méthode, par exemple en ce point névralgique :

Code:
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';

Non ?
Journalisée
laudu60100
Membre Complet
***
Messages: 119


« Répondre #12 le: 02 Décembre 2010 à 19:58:50 »

Citation
Mais je te signale que la case à cocher ne se coche pas, alors pas d'envoi du formulaire  Clin d'oeil
Si je crée cette page sur mon bureau que je nome xx.html :
Code:
<form method="post" action="http://www.lalimacefolle.com/contact.php">
<input type="text" name="nom"><BR>
<input type="text" name="email"><BR>
<input type="text" name="objet"><BR>
<textarea name="message"></textarea><BR>
<input type="checkbox" name="chkboxaspam" CHECKED><BR>
<input type="submit" name="envoi">
</form>
Et je fais ce que je veux !

Fais l'expérience Clin d'oeil



Citation
Code:
$message = (isset($_POST['message'])) ? Rec($_POST['message']) : '';
cette ligne veut dire : skoker rec() de $_POST["message"] si il existe dans $message.
On va voir le détail de la fonction :
Code:
function Rec($text)
{
$text = trim($text); // delete white spaces after & before text
if (1 === get_magic_quotes_gpc())
{
$stripslashes = create_function('$txt', 'return stripslashes($txt);');
}
else
{
$stripslashes = create_function('$txt', 'return $txt;');
}

// magic quotes ?
$text = $stripslashes($text);
$text = htmlspecialchars($text, ENT_QUOTES); // converts to string with " and ' as well
$text = nl2br($text);
return $text;
};
Et on voit : $text = htmlspecialchars($text, ENT_QUOTES);
La fonction faite par Matthieu (rec()) est encore mieux que htmlspecialchars($text, ENT_QUOTES) tout cours. La fonction de Matthieu par exemple crée un "<br />" à chaque fin de ligne.
Mais bon, à lui de détailler sa bête (meme si il me l'a déjà fait) !  Grima&ccedil;ant
« Dernière édition: 02 Décembre 2010 à 20:01:43 par laudu60100 » Journalisée
jp
Membre Junior
**
Messages: 73


« Répondre #13 le: 02 Décembre 2010 à 20:11:23 »

Bon après lecture du tuto de Matthieu, pas si simple  Pleurs

Citation
Mais bon, à lui de détailler sa bête (meme si il me l'a déjà fait) !  Grima&ccedil;ant
Non merci  Clin d'oeil

Je viens de re re re re tester ceci :
Code:
<form method="post" action="http://www.lalimacefolle.com/contact.php">
<input type="text" name="nom"><BR>
<input type="text" name="email"><BR>
<input type="text" name="objet"><BR>
<textarea name="message"></textarea><BR>
<input type="checkbox" name="chkboxaspam" CHECKED><BR>
<input type="submit" name="envoi">
</form>

Ici de mon PC la case à cocher antispam joue son rôle ! (= impossible de "lancer" la page)

Y arrives-tu de chez toi ?
« Dernière édition: 02 Décembre 2010 à 20:13:15 par jp » Journalisée
laudu60100
Membre Complet
***
Messages: 119


« Répondre #14 le: 02 Décembre 2010 à 20:16:37 »

Bon après lecture du tuto de Matthieu, pas si simple  Pleurs

Citation
Mais bon, à lui de détailler sa bête (meme si il me l'a déjà fait) !  Grima&ccedil;ant
Non merci  Clin d'oeil

Je viens de re re re re tester ceci :
Code:
<form method="post" action="http://www.lalimacefolle.com/contact.php">
<input type="text" name="nom"><BR>
<input type="text" name="email"><BR>
<input type="text" name="objet"><BR>
<textarea name="message"></textarea><BR>
<input type="checkbox" name="chkboxaspam" CHECKED><BR>
<input type="submit" name="envoi">
</form>

Ici de mon PC la case à cocher antispam joue son rôle ! (= impossible de "lancer" la page)

Y arrives-tu de chez toi ?
Bah oui, tu viens de recevoir un mail de ma part dailleur parce que ça a marché, mais il faut laissé la case coché et mettre une bonne syntaxe d'adresse e-mail comme par exemple : fdfds@fds.ds
 Grima&ccedil;ant
Journalisée
Pages: [1] 2   Haut de page
Imprimer
Aller à:  

Powered by SMF 1.1.16 | SMF © 2011, Simple Machines
Amber design by Bloc | XHTML | CSS