【问题标题】:validate username, password and email with php使用 php 验证用户名、密码和电子邮件
【发布时间】:2010-08-09 15:35:34
【问题描述】:

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

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

【问题讨论】:

    标签: php validation preg-replace preg-match


    【解决方案1】:

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

    让我为你分解不同的部分。

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

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

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

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

    【讨论】:

      【解决方案2】:
      "/^[\.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

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

      你可以使用和你以前一样的简单正则表达式。

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

      希望对你有帮助

      【讨论】:

        【解决方案3】:

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

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

        为我的用户名和密码验证做一个 preg_match

        呃,正则表达式的课程需要相当长的时间 - try this

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

        C.

        【讨论】:

          【解决方案4】:

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

          我不会解释该模式,因为它已包含在其他答案中,但如果您想要一个真正彻底的正则表达式教程(并且免费,可以启动),请查看正则表达式.info 上的 tutorial

          【讨论】:

            【解决方案5】:

            电子邮件验证:

            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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2017-06-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多