2010-09-30 7 views
0

J'essaye d'ajouter des caractères sauvages à mon expression régulière alphanumérique courante seulement pour rendre la validation de mot de passe plus forte. Je n'essaie pas d'exiger que l'utilisateur entre des caractères sauvages, juste leur permettant d'entrer des caractères sauvages.php expression régulière pour la validation de mot de passe avec des caractères sauvages

'/^[a-z0-9]{8,16}$/i' 

J'utilise aussi CakePHP et de faire la validation dans le modèle si cela aide, mais pas vraiment besoin de cette réponse.

  'rule' => '/^[a-z0-9]{8,16}$/i', 
      'on' => 'create', 
      'allowEmpty' => true 
+2

Quels sont les caractères génériques? Si vous voulez autoriser n'importe quel caractère, utilisez simplement ^. {8,16} $ '. – Jens

+0

Voulez-vous dire * caractères * valides? – splash

+0

Ceci est pour un site japonais et je ne veux pas qu'ils mettent en caractères japonais et d'autres caractères étranges. – jimiyash

Répondre

3

Il suffit d'ajouter les caractères que vous souhaitez autoriser à la classe de caractères ([...]):

/^[a-z0-9!#$%&]{8,16}$/i 
1

vous faites tout à fait tort. n'utilisez jamais regexp pour les champs de mot de passe. De cette façon, vous ne permettez rien à l'utilisateur, vous interdisez simplement à l'utilisateur d'entrer ce qu'il veut utiliser comme mot de passe (peut-être des caractères spéciaux comme & ou {

en tout cas votre approche blesse plus que ça aide .

ce que vous devez faire, encourage l'utilisateur à utiliser specialChars et mots de passe plus complexes simplement en affichant un indicateur « rouge-jaune-vert » en dehors du champ de mot de passe.

0

Je pense aussi que vous devriez permettre à « tout ", donc supprimer la validation sur le contenu, et seulement interdire les chaînes" vides ", ou chaînes trop courtes (idéalement avec une validation javascript en direct comme un indicateur de sorte que peop le ne doit pas essayer 10 fois avant de comprendre ce qui fonctionne). Vous ne devriez pas vous soucier de ce que les gens tapent, même en japonais, car vous allez encoder cette chaîne de toute façon (j'espère!), En utilisant la fonction intégrée de CakePHP, avec sha1 et md5 et le sel, et vous aurez finir avec quelque chose d'inoffensif à la fin.

Utiliser $this->Auth->password($string);

Questions connexes