好的,我编写了自己的 SALT 版本,我称之为咸味,哈哈,不要取笑我。无论如何,我的脚本的注册部分如下所示是 100% 正确工作的。
//generate SALTY my own version of SALT and I likes me salt.. lol
function rand_string( $length ) {
$chars = "ABCDEFGHIJKLMNOPQRSTUWXYZabcdefghijklmnopqrstuwxyz1234567890";
$size = strlen( $chars );
for( $i = 0; $i < $length; $i++ ) {
$str .= $chars[ rand( 0, $size - 1 ) ];
}
return $str;
}
$salty = rand_string( 256 );
//generate my extra salty pw
$password = crypt('password');
$hash = $password . $salty;
$newpass = $hash;
//insert the data in the database
include ('../../scripts/dbconnect.php');
//Update db record with my salty pw ;)
// TESTED WITH AND WITHOUT SALTY
//HENCE $password and $newpass
mysql_query("UPDATE `Register` SET `Password` = '$password' WHERE `emailinput` = '$email'");
mysql_close($connect);
但是我的 LOGIN 脚本失败了。我将其设置为测试并回显是否登录。它总是返回失败。我进入数据库并将加密的咸密码更改为“测试”,我得到了成功。所以我的问题出在我假设的这个 LOGIN 脚本中。现在我不确定如何在其中实现我的 $Salty。但也请注意,即使没有 SALTY(仅使用 crypt 存储我的通行证) - 我仍然无法成功登录。如果你建议我使用河豚 - 请注意我的虚拟主机不支持它,我不知道如何安装它。
这是我的登录脚本:
if (isset($_POST['formsubmitted']))
{
include ('../../scripts/dbconnect.php');
$username = mysql_real_escape_string($_POST['username']);
$password = crypt(mysql_real_escape_string($_POST['password']));
$qry = "SELECT ID FROM Register WHERE emailinput='$username' AND Password='$password'";
$result = mysql_query($qry);
if(mysql_num_rows($result) > 0)
{
echo 'SUCCESS';
//START SESSION
}
else
{
echo 'FAILED';
//YOU ARE NOT LOGGED IN
}
}
那么这个登录有什么问题呢?为什么仅使用 crypt/storing only crypt 不起作用?
我怎样才能让它同时存储 crypt 和随机生成的 SALTY :) ?
泰前进