无法正确地将DynamicSalt值输入到mysql中

时间:2011-11-05 00:13:21

标签: php mysql

HTML:

            <form method="post" id="NewUserRegistration" action="inc/q/addNewUser.php">
                Username: <input type="text" name="userName" /> <br />
                Password: <input type="password" name="userPass" /> <br />
                Email: <input type="text" name="userEmail" /> <br /> 
                <input type="submit" name="submit" />
            </form>

PHP

<?php
#INSERT new (Requester)

$connect = mysql_connect("localhost", "root", "") or die ("Error , check your server connection.");
mysql_select_db("thedbname");

//Get data in local variable
if(!empty($_POST['userName']))
    $newRequesterUserName=mysql_real_escape_string($_POST['userName']);

if(!empty($_POST['userPass']))
#secure pass
$escapedInputtedPass=mysql_real_escape_string($_POST['userPass']);
$dynamSalt = mt_rand(); 
$SaltyPass = hash('sha512',$dynamSalt.$escapedInputtedPass);

if(!empty($_POST['userEmail']))
    $newRequesterEmail=mysql_real_escape_string($_POST['userEmail']); 

// check for null values
if (isset($_POST['submit'])) {
$query="INSERT INTO User (uUName, uUPass, uEmail, dynamSalt) values('$newRequesterUserName', '$SaltyPass', '$newRequesterEmail', '$dynamSalt')";
mysql_query($query)  or die(mysql_error());
    echo 'Registered!';
}

?>

无论我多少次成功注册,uUNameuUPass都可以很好地插入到数据库中。但dynamSalt始终输入值32767

为什么每次访问此脚本时它都没有生成的值?我尝试在注册结束时在回声期间输出$dynamSalt的值,并输出像1939509953这样的数值 - 总是10个整数[0-9]。数据库字段类型为INT [10] ...

任何?

1 个答案:

答案 0 :(得分:0)

mt_rand()使用c-library rand(),如果未初始化,则使用种子1.

尝试打开并阅读/dev/urandom/(c.f。http://www.php.net/manual/en/function.mt-rand.php#83655

它更安全,并使用正在更改的主机内部状态,因此您的输出不会重复。