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 !

Sujet : probleme avec [ Base de données / MySQL ] (christclamard)

dimanche 4 mai 2008 à 18:07:50 | probleme avec

christclamard

j'ai utiliser la fonction javascript pour  empeché la validation du formulaire  lorsque certain caractere(/ ,//, [ , ],url )sont entré  cela  fonctionne lorsque l'on entre les caractere interdit dans le formulaire une alerte est envoyé et le formulaire n'est pas validé mais a ma grande surprise je constate que des spam se retrouve quand meme dans ma base de donnée depuis un moment, je sais pas comment ca se peut. pour ca j'ai donc decidé d'utiliser la fonction eregi() de php cela  fonctionne bien car franchement j'etais bombarder par des spam pas possible mais je vois que depuis ca a disparu. Seulement le soucis est que une fois le formulaire valider sans caractere interdit je recoit une erreur du genre :

Warning: eregi() [function.eregi]: REG_EBRACK in /hsphere/local/home/yoanchri/abidjandjafoule.com/forum_djafoule.php on line 22

Warning: Cannot modify header information - headers already sent by (output started at /hsphere/local/home/yoanchri/abidjandjafoule.com/forum_djafoule.php:22) in /hsphere/local/home/yoanchri/abidjandjafoule.com/forum_djafoule.php on line 55
 
voici le code qui cause probleme
if (eregi('//',$message) OR eregi('[',$message)OR eregi(']',$message) OR eregi('/',$message) OR eregi('url',$message) OR eregi('www',$message)){
   die('<style type="text/css">

body,td,th {
color: #732494;
}
body {
    background-color: #732494;
}
.Style1 {
    color: #FFFFFF;
    font-weight: bold;
}

</style><p align="center"><span class="Style1">&lt;&lt;</span><a href="history.back()">Retour</a></p>
<div><div>
  <table width="346" border="1" align="center">
    <tr>
      <td width="336" colspan="3"><div align="center" class="Style1">Ce message est considéré comme du spam</div>      <div align="center"></div>      <div align="center"></div>
        <div align="center"></div>
      <div align="center"></div>      <div align="center"></div>
      <div align="center"></div>
      <div align="center"></div>    <div align="center"></div></td>
    </tr>
  </table>
</div> ');


dimanche 4 mai 2008 à 21:07:28 | Re : probleme avec

Evangun

Hello,

n'utilise pas la fonction eregi, mais plutôt strpos( ) et tu règleras le problème.

cf php.net

à+

dimanche 4 mai 2008 à 21:50:44 | Re : probleme avec

christclamard

salut Evangun , bon faut dire que je viens a peine de me plongé dans le php et je ne suis pas assez fort la. donc je serais tres heureux si tu me donnais un example un peu clair avec la variable message qui est censé contenire tout le texte du formulaire a verifier.

dimanche 4 mai 2008 à 23:05:15 | Re : probleme avec

Evangun

Et bien c'est la même chose que ce que tu as fait, tu remplaces juste la fonction eregi par la fonction strpos, c'est tout.
Va sur php.net et cherche strpos, tu trouveras la syntaxe (qui est peut-être bien la même).
à+

lundi 5 mai 2008 à 00:00:36 | Re : probleme avec

gibozsec

Bonjour,

Evangun c'est pas bien de dissuader les gens d'utiliser les expressions régulières  :p

Christclamard, le problème que tu rencontres se situe au niveau de ton expression pour tester les crochets (] et [). Ces deux caractères sont utilisés pour définir des 'plages' de caractères. Par exemple, si tu veux un chiffre tu notes  [0-9] dans ta regexp, ça signifie "n'importe quel chiffre de 0 à 9".

Puisque tu veux trouver le caractère [, tu dois faire une petite manipulation que je t'explique plus bas.

De plus, tu peux utiliser les "ou" dans l'expression directement plutôt que plusieurs appels à eregi grace au caractère '|' (pipe).

En bref, tu peux faire ton test de cette manière :

if (eregi('[]/[]|//|www|url',$message)){


l'expression régulière se construit de cette manière :

1) On veut  'matcher'  une série de caractères précis, on les places donc dans une liste entre crochets :

[a] => capture la lettre 'a'
[/] => Capture le caractère '/'
[adr]=> Capture les caractères a, d et r
...

Pour capturer des crochets, il faut mettre le crochet fermant ']' au début de la liste et le crochet ouvrant '[' à la fin. Ce qui donne :

[]a] => Capture la lettre 'a' et le crochet fermant
[]/[] => Capture les caractères '[', '/' et ']'

2) ensuite à l'aide du 'ou' noté '|', on ajoute les autres possibilités :

'[]/[]|//|www|url' => Capture les chaines qui contiennent un caractère '[', '/' ou ']' ou les chaines  '//', 'url' ou 'www'

Petite remarque, si ton message contient '//', il contient forcement le caractère '/', tu peux donc te passer de tester le double slash. Par contre, puisque tu veux juste empêcher e spam et plus précisement les url, interdire le '/' n'est pas pertinant et peut être gênant. Il vaut mieux tester seulement le double slash. Je laisse comme ça pour que tu puisse adapter à ta guise.

Il y a énormement de possibilités avec les expressions régulières, tu pourrait en écrire une qui vérifie qu'un message contient bien un lien et pas seulement les caractères composant ton lien. Visiblement, tu cherches à bloquer les messages contenant "[url]www.monsite.com[/url]". Tu peux écrire une expression qui correspond à ça exactement.

Dans certains cas un strpos est plus "pratique" mais il y en a d'autres pour lesquels il ne faut pas hésiter. Pour savoir quand utiliser l'un ou l'autre, le mieux est de les connaitres.

Tu trouvera plus d'infos sur les regexp sur pas mal de sites (google te fournira des tutoriel assez facilement). Pour strpos, php.net est sufisant, c'est une fonction basique.

Quand à ton problème de départ (le javascript qui ne bloquait pas les spams), à mon avis les robots qui te spament n'ont pas le JS et donc ne sont pas bloqués. Ou alors, ils postent directement en appelant la page de validation sans passer par ton formulaire.

Bonne continuation.


Grrrrrrrrrrr

lundi 5 mai 2008 à 12:37:54 | Re : probleme avec

christclamard

eh bien merci tous les deux pour votre soutien , mais la j'ai essayer de faire avec la fonction strpos que j'ai voir sur php.net j'ai adapter une exemple a mon cas bon je vais voir si il passe encore des spam toute fois je vais bien approfondir la lecture du message de gibezsec , faut dire que tous les deux vous m'avez beaucoup aider . je repose dans le forum si ca spam de nouveau voici le code que j'ai modifié. encore une fois je suis pas tres classe en php pas trop de rigueur merci:

$findme='url';
$pos=strpos($message,$findme);
if(!$pos===false){ die ('votre message contien des caracteres non autorisés');}
$findme2='http';
$pos2=strpos($message,$findme2);       
if(!$pos2===false){ die ('votre message contien des caracteres non autorisés');}
$findme3='[';
$pos3=strpos($message,$findme3);
if(!$pos3===false){ die ('votre message contien des caracteres non autorisés');}
$findme4='/';
$pos4=strpos($message,$findme4);
if(!$pos4===false){ die ('votre message contien des caracteres non autorisés');}
$findme5=']';
$pos5=strpos($message,$findme5);
if(!$pos5===false){ die ('votre message contien des caracteres non autorisés');}




Cette discussion est classé dans : message, php, formulaire, probleme, eregi


Répondre à ce message

Sujets en rapport avec ce message

Probleme de communication entre formulaire et script [ par djyb2003 ] Bonjour ! Voila mon probleme j'ai utilisé un script php dans mon formulaire pour envoyer un mail rempli des champs du formulaire! mai le serveur me so Espace Membres [ par Moagnon ] Bonjour a tous ;)Alors j'ai un probleme avec mon site web et j'ai besoin de votre aide. Je suis un débutant en php excusez-moi :$.Mon probleme est le a l'aide, je me noie [ par webmastersabi ] Bon voilà, je débute le PHP : je commence en avoir très sérieusement besoin pour mes sites... même si je préfère largement le côté graphisme : mieux v C'est une chose possible ? -> http://www.monsite.com/Formulaire.php?$non=Robert&$mail=robert@mail.com&$message=Bonjour, \nJ'aimerai savoir si blabla... [ par Croquette007 ] Bien le bonjour à tous !C'est la première fois que je poste une question sur le forum, et je viens de découvrir cet éditeur RTE (Riche Texte Editor), URGENT probleme en PHP [ par papabounz ] PAPABOUNZ    bonjour à tous, je debute en php, je vous explique, en fait j'ai un ptit probleme, j'ai 2 form besoin d'aide : formulaire, php javascript [ par tkz ] Bonsoir, apres un bon moment a me casser la tete sur ce probleme, je m'en remets a vous... Voila le probleme : j'ai cree un formulaire qui enregistre formulaire avec PHP [ par da vince ] Davince J'ai créé un site pour un ami peintre: http://www.ericmigom.be/ Un scri probleme avec un formulaire [ par anis_el_madani ] salut a tous;je suis debutant en php et j ai un grand problemejai deux page:index.html:contient simplement un formulaire h probleme de formulaire [ par toonorken ] bonjour,j utilise le formulaire ci dessous sur mon site internet. Le probleme c est que le message qui doit apparaitre lorsque le formulaire est mal r Injection headers formulaire php [ par bdmproof ] (re)Bonjour, cette discussion, fait suite à mon précédent post : "Valider les données d'un formulaire". Ma question est simple, mais la réponse sembl


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), 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,343 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é.