我正在处理需要6到25个字符之间的密码的表单。用户名和全名必须少于 25 个字符。用户名和全名部分工作正常,但是当我输入一个 10 个字符长的密码时,它会回显我的错误代码,就好像它小于 6 个字符一样。我做错了什么?
请看一下代码并请帮助我:问题出在注释为//check 密码长度的区域内。谢谢你
php 代码是:
<?php
echo "<h1>Register</h1>";
$submit = filter_input(INPUT_POST, 'submit');
//form data
$fullname = strip_tags (filter_input(INPUT_POST, 'fullname'));
$username = strip_tags (filter_input(INPUT_POST, 'username'));
$password = strip_tags(filter_input(INPUT_POST, 'password'));
$repeatpassword = strip_tags(filter_input(INPUT_POST, 'repeatpassword'));
$date = date("Y-m-d");
if ($submit)
{
//check for existence
if($fullname&&$username&&$password&&$repeatpassword)
{
$password = md5($password);
$repeatpassword = md5($repeatpassword);
if ($password==$repeatpassword)
{
//check char length of username and fullname
if (strlen($username)>25||strlen($fullname)>25)
{
echo "Length of username or full name is too long!";
}
else
{
//check password length
if (strlen ($password)>25 || strlen ($password)<6)
{
echo "Password must be between 6 and 25 characters";
}
else
{
//register user
}
}
}
else echo "Your passwords do not match";
}
else echo "Please fill in <b>all</b> fields!";
}
?>`
HTML 是:
<html>
<form action='register.php' method='POST'>
<table>
<tr>
<td>
Your full name:
</td>
<td>
<input type='text' name='fullname'>
</td>
</tr>
<tr>
<td>
choose a username:
</td>
<td>
<input type='text' name='username'>
</td>
</tr>
<tr>
<td>
Choose a password:
</td>
<td>
<input type='password' name='password'>
</td>
</tr>
<tr>
<td>
Repeat your password:
</td>
<td>
<input type='password' name='repeatpassword'>
</td>
</tr>
<table>
<p>
<input type='submit' name='submit' value='Register'>
在此处用
其 MD5 总和覆盖密码:
$password = md5($password);
我建议为这些不同的值使用不同的变量名称:
$password_md5 = md5($password);
正确命名变量将消除混淆并降低出错的风险。
在比较密码之前,请运行 MD5 并重复密码。在对它们运行 MD5 之前进行比较和长度检查。
为什么不退出MD5,而不是使用惠而浦?
$password_wp = hash('whirlpool', $password);
还有疑问吗?如果是,那么您在 Stackoverflow 上的答案已经得到了回答:
哪个更安全 md5 或漩涡(哈希)以及为什么?
{ 更多信息 }
http://md5-sha-whirlpool.reviews.r-tt.com