Traitement des données d'un formulaire

Traitement des données d'un formulaire - PHP - Programmation

Marsh Posté le 06-03-2006 à 10:26:34    

Hello
 
j'ai créé un formulaire avec une vérification par Javascript (avec les pop up qui vont avec), ça marche plutot pas mal mais je commence a me rendre compte des limite de ce type de systeme... :o et je comprend pourquoi il faut passer par PHP :D  
 
donc j'ai commencé a me renseigner, et j'ai trouvé un truc intéressant sur la vérification du mail:

if (!eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*$",$email))
  {
  echo "L'adresse mail est invalide"."<br/>";
  }
  else {
  echo "Le mail est good !"."<br/>";
  }


 
ça marche bien, et je m'attaque aux autres champs du formulaire (nom, prénom, adresse etc...)
je saisqu'il y'a des fonctions expres en PHP mais je sais pas très bien quand les utiliser... par ex: addslashes(), stripslashes(), htmlspecialchars(), htmlentities()
pour l'instant, j'utilsais ce dernier pour traiter le champs textarea "message"
 
mon problème c'est qu'il faudrait que je traite mes champs et enlever les caractères spéciaux, les acents, enfin, tout ce qu'il faut...
j'ai vu qu'il fallait utiliser la fonction preg_replace() pour traiter les données, j'ai raison ou pas ? :??:  
 
y'a quelqu'un qui utilise une vérification de formulaire qui pourrait m'expliquer ce qu'il faut traiter, éviter ? :D  
 
merci :jap:  
 :hello:


Message édité par Proov le 06-03-2006 à 10:26:59
Reply

Marsh Posté le 06-03-2006 à 10:26:34   

Reply

Marsh Posté le 06-03-2006 à 13:25:49    

j'ai trouvé ceci mais c'est quand meme assez chiant a compléter :sweat:

$search = array ('@<script[^>]*?>.*?</script>@si',
                 '@<[\/\!]*?[^<>]*?>@si',          
                 '@([\r\n])[\s]+@',                
                 '@&(quot|#34);@i',                
                 '@&(amp|#38);@i',
                 '@&(lt|#60);@i',
                 '@&(gt|#62);@i',
                 '@&(nbsp|#160);@i',
                 '@&(iexcl|#161);@i',
                 '@&(cent|#162);@i',
                 '@&(pound|#163);@i',
                 '@&(copy|#169);@i',
                 '@&#(\d+);@e',
     '@&(eacute|#233);@i',
     '@&(egrave|#232);@i',
     '@&(agrave|#224);@i',
     '@&(aacute|#225);@i',
     '@&(acirc|#226);@i',
     '@&(atilde|#227);@i',
     '@&(auml|#228);@i',
     '@&(aring|#229);@i',
     '@&(ccedil|#231);@i',
     );
 
$replace = array ('',
                 '',
                 '\1',
                 '"',
                 '&',
                 '<',
                 '>',
                 ' ',
                 chr(161),
                 chr(162),
                 chr(163),
                 chr(169),
                 'chr(\1)',
        'e',
        'e',
        'a',
        'a',
        'a',
        'a',
        'a',
        'a',
     'c',
        );


 

$nom_affich = preg_replace($search, $replace, $nom);


 
vous utilisez quoi vous ? :??:

Reply

Marsh Posté le 06-03-2006 à 14:42:28    

je sais pas si ca va t'aider :
http://www.nexen.net/actualites/lo [...] ration.php
 
Moi, je n'ai jamais utilisé une fonction comme celle que t'as posté. Soit le contenu est valide et c'est bon soit il ne l'est pas et alors soit je bloque soit je suprimes. En tout cas, je ne me suis jamais embêté à transformer des lettres accentués en lettre non accentué surtout que tu n'auras jamais une liste compléte ne seraisse que par ce que tu ne conais pas les lettres accentués de chaque langues.
 
Ps : Si tu veux faire un truc pareil fait le avant de tout transformer en entité html et pas avant, ca rendra l'ensemble plus lisible.

Reply

Marsh Posté le 06-03-2006 à 15:32:25    

merci :jap:  
 
je crois que je vais arreter, mon truc de remplacement car c'est impossible, y'a trop de lettres a remplacer...  :D  
va falloir que je triuve une autre méthode :/

Reply

Marsh Posté le 06-03-2006 à 15:36:04    

je sais pas ce que tu cherches à faire mais html_entities() te convertiras tout en entitié HTML et tu n'auras plus d'accent


---------------
N'oubliez pas de mettre [RESOLU] dans le titre quand c'est fini - Pour poster vos sources : http://paste.clicksources.com/
Reply

Marsh Posté le 06-03-2006 à 16:20:11    

ouai c'est ce que je faisais, mais quand j'envoie un formulaire a

'From: '.$nom.' '.$prenom.' <'.$email.'>' . "\r\n";


 
et que mon nom à un accent, ben on reçoit un mail avec des &eacute; et compagnie, et ça bugue compètement :o

Reply

Marsh Posté le 06-03-2006 à 16:27:14    

normal si tu envoi le mail en format Txt (texte brut) c'est tout à fait normal et dans ce cas tu n'utilises pas html_entities() :o

Reply

Marsh Posté le 06-03-2006 à 16:28:11    

"html_entities" est fait pour neutraliser du texte quand on l'affiche dans une page html ou un fichier html. Ca n'est pas fait pour du texte mis dans un mail qui n'est pas au format html.
 
En fait, quand t'envoie du texte dans un mail, il faut l'envoyer tel quel vu que c'est tel quel que le lecteur sera capable de le lire.

Reply

Marsh Posté le 06-03-2006 à 16:38:32    

Negueu tu me déçois là :o

Reply

Marsh Posté le 06-03-2006 à 17:28:11    

ah bon, t'avais de l'estime pour moi ? :D  
 
 
c'est quoi la fonction inverse de htmlentities() ? :??:

Reply

Marsh Posté le 06-03-2006 à 17:28:11   

Reply

Marsh Posté le 06-03-2006 à 17:30:14    

Proov a écrit :

ah bon, t'avais de l'estime pour moi ? :D  
 
 
c'est quoi la fonction inverse de htmlentities() ? :??:


 
T'as déjà envisagé la possibilité d'ouvrir un jour une doc ?  :sarcastic:  
 
http://www.php.net/manual/fr/funct [...] decode.php
 
http://rulzofpunk.free.fr/smileys/arf_fou.gif


Message édité par smaragdus le 06-03-2006 à 17:39:44
Reply

Marsh Posté le 07-03-2006 à 09:47:31    

yes merci :love:  
 
mais y'a tellement de fonctions dans php, on peux pas tout connaitre :D

Reply

Marsh Posté le 07-03-2006 à 10:00:44    

Mais si tu avais appris à lire tu aurais vu que sur la page
http://www.php.net/manual/fr/function.htmlentities.php
tu avais ceci

Citation :


Voir aussi html_entity_decode(), get_html_translation_table(), htmlspecialchars(), nl2br() et urlencode().  


 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed