Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1396 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  empêcher saisie caractères accentués en PHP

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

empêcher saisie caractères accentués en PHP

n°1944717
fab1105
Posté le 25-11-2009 à 18:46:01  profilanswer
 

Bonjour,
 
J'ai un formulaire avec un champ pseudo et je souhaiterai empêcher l'utilisateur de s'inscrire avec un pseudo ayant des caractères accentués tels que é è à ù .
Je n'ai pas trouvé de fonction php qui contrôlerait que les caractères sont sans accent, ou le cas échéant qui convertirait les caractères accentués en caractères sans accent.
Est-ce qu'une de ces deux fonctions existe, ou dois-je utiliser une expression régulière pour convertir les caractères accentués entrés par l'utilisateur?
 
Merci pour vos réponses.

Message cité 1 fois
Message édité par fab1105 le 25-11-2009 à 18:49:17
mood
Publicité
Posté le 25-11-2009 à 18:46:01  profilanswer
 

n°1944723
stealth35
Posté le 25-11-2009 à 19:07:04  profilanswer
 

les 2, controle avec javascript coté client + control php coté server,  
apres un expression regulaire fera l'affaire,  tu peu l'utilisé autant en javascript qu'en php

n°1944760
NewsletTux
<Insérez ici votre vie />
Posté le 25-11-2009 à 21:37:50  profilanswer
 

si ce n'est que le javascript est facilement contournable. Mais ceci dit, ça *peut* éliminer qq tentatives ...


---------------
NewsletTux - outil de mailing list en PHP MySQL
n°1944762
FoxLeRenar​d
Posté le 25-11-2009 à 21:54:10  profilanswer
 

fab1105 a écrit :

Bonjour,
J'ai un formulaire avec un champ pseudo ............
Merci pour vos réponses.


Oui le plus simple est de controler a la reception la nature du POST !
 
Par exemple

Code :
  1. <?php
  2. if (isset($_POST["nom"])) $nom=htmlentities(trim($_POST["nom"]));
  3.     else $nom="";
  4. function pasaccent($nom){
  5.     if (preg_match("#[a-z0-9]#", $nom)){ return TRUE; }
  6.       elsereturn FALSE;  }
  7. }
  8. if(pasaccent($nom) && $nom!="" ){    $oui="oui";}
  9.    else{ $oui="";}
  10. ?>

Message cité 1 fois
Message édité par FoxLeRenard le 25-11-2009 à 21:56:53
n°1944779
stealth35
Posté le 25-11-2009 à 23:33:37  profilanswer
 

NewsletTux a écrit :

si ce n'est que le javascript est facilement contournable. Mais ceci dit, ça *peut* éliminer qq tentatives ...


 
c'est pour ca que je dis "les 2" un controle client parce que c'est plus joli pour l'utilisateur, et un control serveur qui va bien faire tout ca  ;)

n°1944800
skeye
Posté le 26-11-2009 à 07:52:23  profilanswer
 

FoxLeRenard a écrit :


Oui le plus simple est de controler a la reception la nature du POST !
 
Par exemple

Code :
  1. <?php
  2. if (isset($_POST["nom"])) $nom=htmlentities(trim($_POST["nom"]));



 
htmlentities à cet endroit c'est stupide.[:moule_bite]
Cette fonction sert à s'assurer que l'affichage de ta variable sera correct quand tu l'intègres dans du code html, pas à la modifier. Là comme t'es parti du vas stocker du contenu incorrect dans la base de données.


---------------
Can't buy what I want because it's free -
n°1944802
FoxLeRenar​d
Posté le 26-11-2009 à 08:28:02  profilanswer
 

skeye a écrit :


 
htmlentities à cet endroit c'est stupide.[:moule_bite]
Cette fonction sert à s'assurer que l'affichage de ta variable sera correct quand tu l'intègres dans du code html, pas à la modifier. Là comme t'es parti du vas stocker du contenu incorrect dans la base de données.


Merci de ne pas répondre en portant un jugement sur ceux qui comme toi aident au mieux  :non:  
Si bien sur puisqu'il sagit d'un pseudo et donc on bloque toute tentative de hack donc on flingue les balises, ensuite on controlera qu'il n'y a que de l'aphanum.
genre sans accent par exemple

Message cité 1 fois
Message édité par FoxLeRenard le 26-11-2009 à 08:29:34
n°1944811
skeye
Posté le 26-11-2009 à 09:27:38  profilanswer
 

FoxLeRenard a écrit :


Merci de ne pas répondre en portant un jugement sur ceux qui comme toi aident au mieux  :non:

 

Pour aider les gens il faut être sûr de ce qu'on leur dit. En l'occurrence ce n'est pas le cas, ton htmlentities n'a rien à faire ici.

 
FoxLeRenard a écrit :


Si bien sur puisqu'il sagit d'un pseudo et donc on bloque toute tentative de hack donc on flingue les balises

 

Non, non et non. Si ton utilisateur veut s'appeler <body>TOTO</body> c'est ce que tu dois stocker dans la base (si c'est autorisé, évidemment...).
Stocker des données passées par htmlentities introduit un couplage fort entre le médium utilisé pour la présentation des données et les données elles-mêmes, ce qui n'a aucun intérêt et peut même s'avérer gênant pour des choses telles que les recherches dans les données ou tout simplement l'utilisation d'un autre medium qu'une interface web.
C'est une mauvaise pratique, et donner ce genre de mauvais exemple n'aide personne.

Message cité 1 fois
Message édité par skeye le 26-11-2009 à 09:27:54

---------------
Can't buy what I want because it's free -
n°1944813
soulmanto
Chat Noir replica
Posté le 26-11-2009 à 09:30:25  profilanswer
 

Et si tu vérifies les accents après un htmlentities, tu risques pas d'en trouver des masses...

n°1944817
skeye
Posté le 26-11-2009 à 09:44:01  profilanswer
 

soulmanto a écrit :

Et si tu vérifies les accents après un htmlentities, tu risques pas d'en trouver des masses...


Non, et en se démerdant suffisamment mal on peut même se retrouver à virer les caractères non alphanumériques et donc ajouter des caractères qui n'ont rien à voir à la place des entités html.[:petrus75]


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 26-11-2009 à 09:44:01  profilanswer
 

n°1944903
Tirkyth
Posté le 26-11-2009 à 13:03:25  profilanswer
 

Personnellement j'utilise ceci pour remplacer les caractères accentués par leur version non accentuée, ça pourra peut-être te servir :

Code :
  1. if (function_exists('iconv'))
  2. {
  3.  $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
  4. }


Ce n'est peut-être pas la meilleure méthode cela dit, et cela nécessite d'avoir l'extension iconv activée.


Message édité par Tirkyth le 26-11-2009 à 13:03:39
n°1944912
stealth35
Posté le 26-11-2009 à 13:38:18  profilanswer
 

humm

 
Code :
  1. $text = 'ééééééééàààààààèèèèèèèè';
  2. $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
  3.     
  4. echo $text;
 

'e'e'e'e'e'e'e'e`a`a`a`a`a`a`a`e`e`e`e`e`e`e`e

 

couplé a

Code :
  1. echo preg_replace('/[\W]/', '', $text);
 

c'est pas trop mal bon faudrait rajouter les autres caractère


Message édité par stealth35 le 26-11-2009 à 13:47:04
n°1947898
blueteen
Posté le 07-12-2009 à 13:58:20  profilanswer
 

skeye a écrit :


 
Pour aider les gens il faut être sûr de ce qu'on leur dit. En l'occurrence ce n'est pas le cas, ton htmlentities n'a rien à faire ici.
 


 
Je ne crois pas non. A la limite, la personne peut commencer sa phrase avec : Il me semble que...
 
Parce que tu verrais le nombre de conneries que je lis ne serait-ce que sur HFr, par des gens kissyconnaissent et sûrs d'eux...
Les forums ne seraient pas très remplis si on acceptait que les réponses de ceux qui 'savent vraiment'.
Mais au moins il y a des personnes (comme toi) qui sont là pour rectifier (après le côté hautain n'est pas obligatoire non plus), c'est comme ça qu'on avance.

n°1947904
skeye
Posté le 07-12-2009 à 14:23:47  profilanswer
 

blueteen a écrit :

Je ne crois pas non.


Si. En mêlant des âneries à des bribes de réponses on n'aide personne.


---------------
Can't buy what I want because it's free -

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  empêcher saisie caractères accentués en PHP

 

Sujets relatifs
Newsletter PHPPlantage lors de l'execution d'une requete [PHP/MySQL]
Problemes requetes PHP/MySqlEclipse Php Galileo build 20090920-1017 et serveur FTP
[Résolu][PHP] lecture d'objet XML en phpaddition de caracteres en C ...
[résolu][PHP/XML] lecture de fichier XML en PHP[PHP / HTML] Afficher une image avant l'exécution d'un long script php
[PHP 5] Pages Perso Free - Passage en php 5[PHP] Récupéré la réponce d'un <form> dans une variable
Plus de sujets relatifs à : empêcher saisie caractères accentués en PHP


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR