使用php验证用户名,密码和电子邮件

时间:2010-08-09 15:35:34

标签: php validation preg-replace preg-match

我正在使用php验证用户名,密码和电子邮件。我需要确保我做对了,所以没有人可以绕过登录页面。

这是值:

$email=$_POST['email'];
$username=$_POST['uname'];
$passwd=$_POST['pass'];
$passwd2=$_POST['passcopy'];

到目前为止,我有电子邮件验证:

if(!(preg_match("/^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+([.][A-z0-9_\-]+)+[A-z]{1,4}$/", $_POST['email'])))
    die(msg(0,"You haven't provided a valid email"));

密码等于:

if ($passwd != $passwd2) {
die(msg(0,"Passwords are not equal"));
}

密码长度:

if ((strlen($passwd) < 8) || (strlen($passwd) > 16)) {
die(msg(0,"Your password must be between 8 and 16 characters. Please type in a longer password"));
}

我知道我需要验证用户名。我只想小写a-z0-9以避免人们制作类似的用户名?那么密码,我应该在密码中允许哪些字符?

PS。我还是不明白preg_match和ereg。如果有人可以解释这个"/^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+并为我的用户名和密码验证做一个preg_match,那将非常有帮助。

5 个答案:

答案 0 :(得分:1)

字符串^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+是一个正则表达式,用于描述您验证电子邮件字符串的模式。

让我为你打破不同的部分。

^这表示模式应该在行的开头匹配。

[\.A-z0-9_\-\+]+这部分由两个子部分组成,第一个[\.A-z0-9_\-\+]描述一个字符类,然后一个+表示你想要一个或多个前一个类。

[@]只匹配一个@符号。

[A-z0-9_\-]+另一类带有+的字符,表示您需要该类中的一个或多个字符。

答案 1 :(得分:1)

"/^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+/"// write same checking on same line

#1# ^[\.A-z0-9_\-\+]+

char必须以(.a-z0-9 _- +)一个或多个以前的char开头[]

#2# [@]

这个字母不得输入///放入垃圾桶而不是进入他

#3# [A-z0-9_\-]+$// it should be ending with $char

字符串包含char之间的字符(A-Z0-9_-)符号加上一个或多个前一个字符 和$ is char必须以方括号中的前一个字符结束。

你可以使用简单的正则表达式与你之前的相同..

/^[A-z0-9_\-\+@]+$/ // My regex script do same as your previous code

希望它可以帮助你

答案 2 :(得分:0)

  

PS。我还是不明白preg_match和ereg。如果有人可以解释这个

这是如何检查有效电子邮件地址的一个非常糟糕的例子。尝试谷歌更好的例子。请注意,仅仅因为它匹配良好正则表达式并不意味着该人正在那里接收邮件 - 如果您需要验证电子邮件地址,则更好的方法是将激活URL或初始密码邮寄到提供的地址。

  

为我的用户名和密码验证制作preg_match

呃,正则教育课程需要相当长的时间 - try this

只要组合是唯一的并且您handle the data properly

,用户名(或密码)包含的内容无关紧要

下进行。

答案 3 :(得分:0)

preg_matchereg是通过regular expression匹配字符串的两种方式。 preg函数使用PCRE(perl兼容的正则表达式)引擎,是php的推荐正则表达式函数; ereg函数现已弃用。

我不会解释这个模式,因为它包含在其他答案中,但是如果你想要一个非常彻底的正则表达式教程(并且是免费的,要启动),请查看关于正则表达式的tutorial。资讯

答案 4 :(得分:0)

电子邮件验证:

if (filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)  == TRUE) {
    $email = $_POST["email"];
} else {
    echo "email error";
    die;
}

http://php.net/manual/en/filter.filters.validate.php