验证用户名,密码和电子邮件与PHP
我正在验证用户名,传递和电子邮件与PHP。我需要确保自己做到了,所以没有人可以绕过登录页面。验证用户名,密码和电子邮件与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,这将是非常有帮助的。
字符串^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+
是一个正则表达式,它描述了您验证电子邮件字符串的模式。
让我为你打破不同的部分。
^
这表示模式应该在行首开始匹配。
[\.A-z0-9_\-\+]+
这部分是由两个子部分组成,第一部分描述一类字符[\.A-z0-9_\-\+]
,然后a +表示您想要一个或多个以前的类。
[@]
恰好匹配一个@
符号。
[A-z0-9_\-]+
之后的另一类字符+
意味着您需要一个或多个类中的字符。
PS。我仍然不明白preg_match和ereg。如果有人能解释这个
这是一个非常糟糕的例子,如何检查一个有效的电子邮件地址。尝试谷歌更好的例子。请注意,仅仅因为它匹配正确正则表达式并不意味着该人正在接收邮件 - 如果您需要验证电子邮件地址,则更好的方法是将激活URL或初始密码发送到提供的地址。
做出的preg_match我的用户名和密码验证
嗯,在正则表达式的教训将需要相当长的时间 - try this
这真的无关紧要的用户名是什么(或密码)包含只要组合是唯一的,你handle the data properly
C.
preg_match
和ereg
是通过regular expression匹配字符串的两种方式。 preg
函数使用PCRE(perl兼容的正则表达式)引擎,并且是php推荐的正则表达式函数; ereg
函数现在已被弃用。
我不会去解释这个模式,因为它在其他答案中已经介绍过了,但是如果你想要一个非常彻底的正则表达式教程(并且免费,需要引导),请查看regular-expressions.info上的tutorial。
"/^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+/"// write same checking on same line
#1# ^[\.A-z0-9_\-\+]+
字符必须用(.A-Z0-9 _- +)的一个或多个前一个字符到[]
#2# [@]
这个字符不能inputed ///投入到垃圾一同启动不进入他
#3# [A-z0-9_\-]+$// it should be ending with $char
字符串包含字符之间(A-Z0-9_-)符号的平均值加上一个或多个前一个字符 和$是char必须与上一个结束在方括号中的ious字符。
u可以使用简单的正则表达式是相同的,以你以前..
/^[A-z0-9_\-\[email protected]]+$/
// My regex script do same as your previous code
希望它可以帮助ü
电子邮件验证:
if (filter_var($_POST["email"], FILTER_VALIDATE_EMAIL) == TRUE) {
$email = $_POST["email"];
} else {
echo "email error";
die;
}