【问题标题】:Input validation PHP [duplicate]输入验证PHP [重复]
【发布时间】:2015-11-12 17:31:50
【问题描述】:

我有一个非常基本的 php 表单,我希望更新。

它用于在 Web 应用程序上注册新用户。

问题是缺乏验证,密码可以是任意长度的字符。

任何人都可以帮助或指出我如何在表单上强制执行最小密码长度或复杂性的正确方向吗?

代码是:

<h1>Register</h1>

<p>Please enter your details below to register.</p>

<form method="post" action="register.php" name="registerform" id="registerform">
<fieldset>
    <label for="username">Username:</label><input type="text" name="username" id="username" /><br />
    <label for="password">Password:</label><input type="password" name="password" id="password" /><br />
    <label for="email">Email Address:</label><input type="text" name="email" id="email" /><br />
    <input type="submit" name="register" id="register" value="Register" />
</fieldset>
</form>

【问题讨论】:

  • 这取决于您要为密码强制使用什么字符
  • 嗯,你的表单是由文件register.php根据你自己的代码处理的。所以我建议你在那里简单地实施你想要应用的检查。

标签: php apache web-applications password-protection


【解决方案1】:

这是一个迟钝的例子,它强制密码至少有一个大写、小写和一个数字......只是为了让你开始

<?php 

$pass1 = 'adsda';
$pass2 = 'asds3q3';
$pass3 = 'adsDd2d';

function pass_complexity($pass, $len) {
    $c = []; 
    $array =  str_split($pass); 
    foreach ($array as $l) {
        if (ctype_digit($l)) {
            $c['d'] = 1; 
        }

        if (ctype_upper($l)) {
            $c['u'] = 1; 
        } 

        if (ctype_lower($l)) {
            $c['l'] = 1; 
        }   
    }

    return strlen($pass) >= $len && count($c) == 3; 
}


if (pass_complexity($pass3, 2)) {
    echo 'password ok';
} else {
 // password should have at least 1 upper, 1 lower 1 number and 
 // and must be at least more than 2 digits in length  
}

你只需要调用pass_complexity()函数,第一个参数是密码,第二个是字符串长度限制

【讨论】:

    【解决方案2】:

    查看此线程以对您的密码字符串进行字符验证:

    Check if a string contains numbers and letters

    对于字符串长度:

    http://php.net/manual/en/function.strlen.php

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-09
      • 2016-02-29
      • 2011-03-04
      • 1970-01-01
      相关资源
      最近更新 更多