【问题标题】:Validating password and email验证密码和电子邮件
【发布时间】:2011-03-12 04:06:22
【问题描述】:

我想验证密码字段中的密码,最少 6 个字符,最多 12 个字符。而且它应该是字母数字字符。如何使用 PHP 验证相同的内容?并且还需要验证电子邮件。..

【问题讨论】:

  • 设置最大密码长度并限制您可以输入的字符类型既糟糕又糟糕。请重新考虑除最小长度以外的任何内容!
  • 怎么会这样??字母数字字符很难破解..不是吗??
  • 如果我要暴力破解你的密码,我可能有(例如)255 个字符要测试。如果您将其限制为字母数字,我有 62 个字符要测试(我认为)。
  • 我不建议为密码字段设置最大值。密码的最小长度很好,但绝不应该有最大限制。所以你可以说我建议你不要。

标签: php forms webforms


【解决方案1】:

验证密码通常是一件很奇怪的事情,因为您的存储应该被散列或加密,所以您实际上看不到原始密码(因此限制字符范围和最大长度是不必要的)。

将其限制为这些字符只会使破解它们更容易(要测试的字符子集)。

您可以使用正则表达式进行验证。

preg_match('/^\w{6,12}$/', $str);

(这也允许使用下划线 (_)。

更好的验证将是最小长度(在本例中为 8 个字符),并且可能是非字母数字字符,这将是...

strlen($str) >= 8 AND preg_match('/\W/', $str)

您可以使用...验证电子邮件

filter_var($str, FILTER_VALIDATE_EMAIL);

【讨论】:

  • @aron 假设上面的$str 是相关用户输入的输入。如果你不明白这一点,你应该问一个问题如何在 PHP 中获取用户输入并验证它?。我相信这里已经有很多类似的问题可以帮助你。
  • 表单的动作应该是测试它的php代码正在运行的url。为了安全起见,您至少应该 md5 密码。
  • 哦,我很困惑它给出 1 或 0,但它不检查密码是否包含数字。即使数字不存在并且超过 6 个字符,它也会接受为什么??
  • 表单的方法应该设置为POST,并且操作到一个单独的PHP文件。 $_POST 特定字段并验证它们。从那里开始,做你想做的事。将它们重定向回出现错误的上一页或将它们带到下一页。鉴于您是如何提出基本问题的,我会避免任何形式的 Javascripting 和/或您可以执行的其他更复杂的操作。
  • @Syed Abdul Rahman 为什么要重定向它?您可以在同一页面本身上验证相同的内容吗??
猜你喜欢
  • 2021-10-13
  • 2015-11-14
  • 2016-05-19
  • 1970-01-01
  • 2020-06-17
  • 2015-08-22
  • 2020-10-19
  • 1970-01-01
  • 2021-11-21
相关资源
最近更新 更多