Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RECHERCHE ET REMPLACEMENT DE MOT INTERDIT SUR VALIDATION DE FORMULAIRE


Information sur la source

Catégorie :Formulaire Classé sous : rechercher, remplacer, SecFilterEngine, SecFilterScanPOST, corrigé automatiquement Niveau : Débutant Date de création : 06/11/2007 Date de mise à jour : 08/11/2007 00:03:19 Vu : 3 224

Note :
Aucune note

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note

Description

La sécurité sur serveur quand elle est activé ne permet pas l'envoi des données si celuis-ci inclu un mot interdit.

En effet les paramètres de sûreté de type SecFilterEngine et SecFilterScanPOST interdise certain mot, notamment le mot lynx.

D'autres mot sont aussi interdit mais celui-ci étant le plus couramment utilisé dans une conversation il peut être gênant à la longue de voir ses internautes se refusé l'envoi du formulaire ou l'arrivée sur une page d'erreur à cause de ce dernier. Voici donc une petite source toutes simples pour contourner ce problème.
 

Source

  • Dans la page de formulaire :
  • ----------------------------
  • <?
  • // permet juste de voir le resultat
  • if($_POST){
  • echo $_POST['c1'].$_POST['c2'];
  • }
  • ?>
  • <script LANGUAGE="JavaScript" SRC="submit.js"></script>
  • <form method="post" action="" onsubmit="return lynx(this)">
  • <textarea name="c1" cols="75" rows="7">Saisissez ici votre texte</textarea>
  • <br><br>
  • <textarea name="c2" cols="75" rows="7">Saisissez ici votre texte</textarea>
  • <br><br>
  • <input type="submit" value="Remplacer">
  • </form>
  • ----------------------
  • Dans le fichier submit.js
  • ----------------------
  • function lynx(form)
  • {
  • // recherche du mot lynx
  • var maReg = new RegExp("lynx ", "gi") ;
  • // boucle tous les champs du formulaire
  • for (var i = 0; i < form.elements.length; i++) {
  • var text = form.elements[i].value.toString() ;
  • // mot de remplacement
  • var resultat = text.replace(maReg, "lynx,") ;
  • //si le mot est trouve on retourne la nouvelle valeur du champ
  • form.elements[i].value = resultat;
  • }
  • }
Dans la page de formulaire :
----------------------------
<?
// permet juste de voir le resultat
if($_POST){
echo $_POST['c1'].$_POST['c2'];
}
?>
<script LANGUAGE="JavaScript" SRC="submit.js"></script>
<form method="post" action="" onsubmit="return lynx(this)">
<textarea name="c1" cols="75" rows="7">Saisissez ici votre texte</textarea>
<br><br>
<textarea name="c2" cols="75" rows="7">Saisissez ici votre texte</textarea>
<br><br>
<input type="submit" value="Remplacer">
</form>
----------------------
Dans le fichier submit.js
----------------------
function lynx(form)
{
// recherche du mot lynx
var maReg = new RegExp("lynx ", "gi") ;
// boucle tous les champs du formulaire
for (var i = 0; i < form.elements.length; i++) {
var text = form.elements[i].value.toString() ;
// mot de remplacement
var resultat = text.replace(maReg, "lynx,") ;
//si le mot est trouve on retourne la nouvelle valeur du champ
form.elements[i].value = resultat;
}
}

Conclusion

Script extrêmement simple a mettre en œuvre car tous les champs du formulaire sont listé et control lé automatiquement.

Il suffit simplement de rajouter dans l'entête de vos pages de formulaire :
<script LANGUAGE="JavaScript" SRC="submit.js"></script>

et d'ajouter sur l'ensemble de vos formulaire : onsubmit="return lynx(this)"
 

Historique

06 novembre 2007 00:07:20 :
correction orthographe
07 novembre 2007 21:59:15 :
optimisation
08 novembre 2007 00:03:19 :
correction

Commentaires et avis

signaler à un administrateur
Commentaire de Arto_8000 le 07/11/2007 01:49:02

Je vais surement faire un commentaire plus long que la source, mais bon.

Côté PHP :

Tu ne fais que tester si il y a des valeurs POST, pas si les valeurs c1 et c2 existent. Faut changer par ceci :

<?php
if(isset($_POST['c1']) && isset($_POST['c2']))
{
    echo $_POST['c1'].$_POST['c2'];
}
?>

Côté HTML :

Tous les attributs des balises doivent être en minuscules. Il manque tout la structure du code HTML de base (html, body et head). Pour ton formulaire on ne met pas de fonction dans le bouton submit, on le met dans le onsubmit du form.

<form method="post" action="" onsubmit="return lynx(this)">

Côté Javascript :

Pour parcourir les éléments d'un formulaire on utilise le tableau elements.

for (var i = 0; i < form.elements.length; i++) {

Et la même chose s'applique pour aller chercher la valeur.

var text = form.elements[i].value;

Le reg que tu utilises est le même à chaque fois. Il est donc inutile qu'il soit redéclaré à chaque fois. Met le avant ta boucle.

Je vois pas pourquoi tu vérifies si le texte est là. De toute façon s'il ne si trouve pas ça ne change rien au résultat final.

Aussi se sont généralement des traitements qui sont fait côté serveur, car les protections javascripts sont facilement contournables. Pour être plus intéressant comme code il faudrait que tu rajoutes des possibilités comme des champs à ignorer, une liste de mots à remplacer, etc.

signaler à un administrateur
Commentaire de coucou747 le 07/11/2007 07:16:14

c'est clair que c'est du tres vieux code...
On a deja croise des codes de verification de formulaires beaucoup plus pousses ici, la, il te manque la partie alert, et la verification de multiples champs avec des regexp differentes

signaler à un administrateur
Commentaire de Fwdavy le 07/11/2007 21:17:14

Pour PHP c'était juste pour permettre au gens de tester en fesant un simple copier / coller de ce script...pour le html idem, on est juste dans de l'intégration là.

Apres l'utilité de ce script est comme je l'ai marqué pour une utilisation transparente avant SecFilterEngine et SecFilterScanPOST il faut donc surtout pas gérer des alertes. La protection coté serveur est déjà présente c'est au contraire pour éviter au posteur de se retrouver avec une page d'erreurs causé par la protection. Sinon en effet mon script était pas trés bien optimisé je vais modifier sur vos conseils ^^

signaler à un administrateur
Commentaire de Arto_8000 le 07/11/2007 23:23:42

"La protection coté serveur est déjà présente c'est au contraire pour éviter au posteur de se retrouver avec une page d'erreurs causé par la protection"

Tu fais juste remplacer des mots ... tu peux faire la même chose côté serveur. Je vois pas le problème.

signaler à un administrateur
Commentaire de Fwdavy le 08/11/2007 00:02:02

et si on a pas acces à la configuration du serveur ? Ce qui en soit me parait pas contradictoire, serveur et réseautique n'est pas forcement égale au service développement web...Par ailleurs beaucoup de développeur n'ont pas les ressources (et l'envies ?) nécessaire de s'occuper d'un serveur et qui en soit sont deux métiers différent.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Probleme dans ma fonction Rechercher Remplacer [ par Jarod1980 ] Jarod_Delaware Expression régulière : Remplacer un texte par un autre mais en évitant les liens hypertextes [ par kiwithereturn ] Bonjour,Je sollicite votre aide sur un problème d'expression régulière que je ne maitrise pas du tout.Mon objectif : Filtrer sur un forum, avec Javasc remplacer un message d'attente par un message d'erreur au bout d'une minute [ par mobilotek ] salut!jai un script php, qui est un peu long a s'executer, et avant de le lancer, j'affiche un div qui fait patienter l'utilisateur jusqu'a la fin.je remplacer ok du bouton d'alerte [ par rduvrac ] Bonjour peux t on remplacer la valeur des boutons dans un message d'alerte ? j'ai ce code : choix = confirm("Vous n avez pas rempli le champ"); if Remplacer une image par un <embed> de la même taille lorsqu'on clique dessus [ par leon3d ] Bonjour,Je cherche comment remplacer une image par une balise &lt;embed&gt; lorsqu'on clique sur l'image.Dans mon cas il s'agirait de remplacer une im rechercher mot clé dans propriété word [ par theboubourse ] bonjour je souhaiterai avoir dans une variable les mot clé d'un document word je ne connai pas bcp le javascript si vs connaisé la solution ou un scri Wysiwyg : Rechercher un mot dans un SPAN ou un DIV ??? [ par fabiano13 ] Bonjour,Je cherche a créer une fonction qui permet de rechercher un mot uniquement dans un span spécifique (&lt;span id="wsy" ContentEditable&gt;&lt;/ Remplacer window.open [ par amateurjava ] Bonjour,je cherche à lancer la creation d'un pdf (par FPDF) à partir d'une page, les données provenant de champs de formulaire de cette page.Jusqu'a p Remplacer du texte par une image [ par rorkaii ] Salut à tous, j'ai recherché "un peu" sur le site sans trouvé mon bonheur, alors que je sait que ça existe.Voilà mon problème, en me baladant sur dive rechercher une image dans une page [ par kisscoolgirl ] bonjour ma question est très simple :-je suis sur la page1.html-je veux afficher une alerte sur cette page1.html (genre une image ou du texte) si et


Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.