代码之家  ›  专栏  ›  技术社区  ›  ganjan

用PHP验证用户名、密码和电子邮件

  •  2
  • ganjan  · 技术社区  · 14 年前

    我正在用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来避免人们使用相似的用户名?那么密码,密码中应该允许哪些字符?

    另外,我还是不明白普雷格和埃雷格。如果有人能解释的话 "/^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+ 并使我的用户名和密码验证的preg_匹配,这将非常有帮助。

    5 回复  |  直到 12 年前
        1
  •  1
  •   Alfred redcoder    12 年前

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

    让我为你把不同的部分分开。

    ^ 这表示模式应该从行首开始匹配。

    [\.A-z0-9_\-\+]+ 这部分由两个子部分组成,第一部分 [\.A-z0-9_\-\+] 它描述了一类字符,然后是一个+表示您需要上一个类中的一个或多个。

    [@] 完全匹配一个 @ 符号。

    [A-z0-9_\-]+ 另一类字符 + 在这之后,意味着您需要类中的一个或多个字符。

        2
  •  1
  •   Joko Wandiro    14 年前
    "/^[\.A-z0-9_\-\+]+[@][A-z0-9_\-]+/"// write same checking on same line
    
    #1# ^[\.A-z0-9_\-\+]+
    

    char必须以(.a-z0-9_u-+)一个或多个前一个char开始,并转换为[]

    #2# [@]
    

    这个字符不能输入///放入垃圾桶,不能进入他。

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

    字符串包含(a-z0-9_u-)符号加平均值是前一个字符中的一个或多个 $is char必须以方括号中的前一个字符结尾。

    你可以使用简单的regex和你以前的一样。

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

    希望它能帮助你

        3
  •  0
  •   symcbean    14 年前

    另外,我还是不明白普雷格和埃雷格。如果有人能解释的话

    这是如何检查有效电子邮件地址的一个非常糟糕的例子。试着用谷歌搜索更好的例子。注意,因为它与 好的 Regex并不意味着此人正在那里接收邮件——如果需要验证电子邮件地址,最好的方法是将激活URL或初始密码发送到提供的地址。

    使preg与我的用户名和密码验证匹配

    呃,学习正则表达式需要很长时间- try this

    只要用户名(或密码)的组合是唯一的,并且您 handle the data properly

    C.

        4
  •  0
  •   Daniel Vandersluis    14 年前

    preg_match ereg 有两种方法可以通过 regular expression . 这个 preg 函数使用PCRE(与Perl兼容的正则表达式)引擎,是PHP推荐的正则表达式函数;以及 埃里格 现在不推荐使用函数。

    我不想解释这个模式,因为它已经包含在其他答案中了,但是如果您想要一个非常全面的正则表达式教程(免费的,引导),请查看 tutorial 关于正则表达式.info。

        5
  •  0
  •   Mihai Iorga    12 年前

    电子邮件验证:

    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