You are here: Re: Some Regexp questions « PHP Programming Language « IT news, forums, messages
Re: Some Regexp questions

Posted by Rik Wasmus on 02/01/08 18:01

On Fri, 01 Feb 2008 18:36:54 +0100, k3pp0 <upthekhyber@gmail.com> wrote:

> Hello,
>
> I have a registering form with the input fields for realname (two
> seperate fields for surname and forename), username, password,
> password again and email.
>
> I want to check each each input field and redirect to another page
> when all the fields are valid. If not, the form should show up again,
> with all the invalid input fields highlighted and with the adequate
> error messages displayed.
>
> Therefor, I write a function for every input field, that checks the
> validity of it.
> I thought I'd do that with regexp/preg_match, but I'm a big newbee...
>
> I already found a quite good solution for the email field (http://
> www.ilovejackdaniels.com/php/email-address-validation), what do you
> think about it?

Better then most, not entirely correct yet. See if you can Friedl's regex
for email validation, it's a few pages long. However, being more
'allowable' for email addresses usually does the trick. Just make sure no
header injection is done & there's only 1 @ present.

> So, what I still need, are the validation functions (regexps) for the
> surname, forename, username, password an the second password.
>
> The realname (surname/forename) should only contain all letters (also
> special characters like an umlaut, ´, ` and all that kind of stuff), a
> "-" and a space.

'That kind of stuff' doesn't cut it in regexes. What kind of stuff?
With a proper locale you can use \w for the letter, else use utf-8 mode
and something like \p{L}. You do have to define what 'other' stuff is and
put that into a character class. Personnaly, I usually trust people who
have entered their name to be correct, and I'd just use /\S+/ (meaning: at
least one character that is not whitespace). /\w+/ is also an option.

> The username should only consist of letters (no special characters),
> numbers, "_" and "-" (or do you guys suggest any other allowed
> characters?).

I'd suggest _all_, I don't care it someone chooses a weird username,
allthough I'd probably limit it to a certain length.
Your suggestion would be: /^[a-z0-9_-]+$/i, mine would be /^.{1,16}$/s
(limited from 1 to 16 chars here).

> For the password, I guess I should allow every possible combination
> and check for a minimum lenght...

Yup, /^.{8,*}$/s, and only store some hash of the (md5()/sha1() etc.).

On a side note: I'd use trim() on all strings before matching.
--
Rik Wasmus

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация