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!';
}
?>
无论我多少次成功注册,uUName
和uUPass
都可以很好地插入到数据库中。但dynamSalt
始终输入值32767
为什么每次访问此脚本时它都没有生成的值?我尝试在注册结束时在回声期间输出$dynamSalt
的值,并输出像1939509953
这样的数值 - 总是10个整数[0-9]。数据库字段类型为INT [10] ...
任何?
答案 0 :(得分:0)
mt_rand()
使用c-library rand(),如果未初始化,则使用种子1.
尝试打开并阅读/dev/urandom/
(c.f。http://www.php.net/manual/en/function.mt-rand.php#83655)
它更安全,并使用正在更改的主机内部状态,因此您的输出不会重复。