PHP中的密码验证类
验证密码时,很容易确保密码具有一定的长度,但是如果您要确保密码至少包含一个数字,或者包含大小写字母,会发生什么情况呢?最近,我不得不像这样验证密码,因此我创建了一个密码验证类,该类可以轻松验证密码字符串是否符合一组给定的参数,还可以在需要时更改这些参数。
在此处下载密码类。
Password类采用一组可以在运行时更改的参数,并使用这些参数来验证密码。要使用默认参数运行密码验证器,请执行以下操作:
$password = new Password(); $password->validatePassword('password');
这将返回false,因为它不满足密码有效所需的最低要求。默认密码的最小长度为7,最大长度为15,至少5个字母(至少1字母为大写字母,1字母为小写字母),包含至少1数字,且介于1到3个符号之间。默认情况下,允许的符号也限制为#,_和!。但这些可以更改。如果密码符合验证要求,则该validatePassword()函数将返回true。仅作为示例,以下密码将验证为true。
$password = new Password(); $password->validatePassword('qweQWE123');
可以在运行时使用各种设置方法来更改变量。例如,要设置密码的最大长度,您可以使用该setMaxLength()函数并将其传递给整数。
$password = new Password(); $password->setMaxLength(3); $password->validatePassword('password');
要一次设置每个不同的参数,您可以将密码对象的构造函数传递给参数的关联数组。允许的符号参数必须是一个数组,否则将不被保存。
$password = new Password(array( 'minLength' => 15, 'maxLength' => 30, 'minNumbers' => 5, 'minLetters' => 5, 'minLowerCase' => 5, 'minUpperCase' => 5, 'minSymbols' => 5, 'maxSymbols' => 10, 'allowedSymbols' => array('#', '_', '-', '!', '[', ']', '=', '~', '*'), ));
该函数的setOptions()工作方式与此相同,允许您在运行时设置多个选项。应该注意的是,该对象将检查这些输入的值,并在发现任何使密码验证变为不可能的情况下对其稍作修改。例如,如果将最小密码长度设置为大于最大密码长度,则对象会将最小密码长度设置为与最大密码长度相同,以便可以验证密码。
Password类还执行其他两个功能,分别是给密码评分和自动创建随机有效密码。
通过查看使密码易于发现的事物来对密码进行评分。这些因素包括在密码中包含字典单词或多次具有相同的字母。该词典通过使用包含一堆单词的纯文本文件来工作,如果找到任何单词,则该单词将从总分中扣除。密码可以得到的最高分是100,如果发现任何问题,则减去该值。
密码评分不会查看已设置了哪些验证因素,而只会查找密码创建中的最佳做法。要为密码评分,请使用以下score()功能:
$password = new Password(); $score = $password->scorePassword('wound33oo#_Xu3!');
随机有效密码的创建是通过使用该generatePassword()功能来完成的。该函数查看在对象中设置的不同值,并创建一个字符串,该字符串通过对这些参数的验证。这是创建随机密码的方法。
$password = new Password(); $password = $password->generatePassword();
这将生成类似#7xWq#J6的字符串。如果要获取其他密码,请generatePassword()再次致电。除非参数受到严格限制,否则此函数的每个返回值都应不同。
随意运行Password类。它已经过很好的测试,但是可能有些问题被我忽略了,因此,如果您发现任何问题,请告诉我。