我正在编写一个应用程序,我需要在两个固定时间戳之间分配随机日期
我怎么能用PHP实现这一点我先搜索过但只找到了Java而不是php的答案
例如 :
$string = randomdate(1262055681,1262055681);
Run Code Online (Sandbox Code Playgroud) 我是PHP新手,这也是我的第一个登录系统,所以如果你们可以查看我的代码,看看你是否能发现任何安全漏洞,那将是很棒的:
注意:虽然此处未显示,但我正在清理所有用户输入.
第1步:我获取用户选择的密码并通过此功能运行它:
encrypt($user_chosen_password, $salt);
function encrypt($plain_text, $salt) {
if(!$salt) {
$salt = uniqid(rand(0, 1000000));
}
return array(
'hash' => $salt.hash('sha512', $salt.$plain_text),
'salt' => $salt
);
}
Run Code Online (Sandbox Code Playgroud)
第2步:然后我将哈希和salt($password['hash']和$password['salt'])存储在数据库的users表中:
id | username | password | salt | unrelated info...
-----------------------------------------------------------
1 | bobby | 809a28377 | 809a28377f | ...
fd131e5934
180dc24e15
bbe5f8be77
371623ce36
4d5b851e46
Run Code Online (Sandbox Code Playgroud)
步骤1:我获取用户输入的用户名并查看数据库以查看是否返回了任何行.在我的网站上,没有2个用户可以共享相同的用户名,因此用户名字段始终具有唯一值.如果我返回1行,我会抓住该用户的盐.
步骤2:然后我通过加密功能运行用户输入的密码(如上所述),但这次我还提供从数据库检索到的盐:
encrypt($user_entered_password, $salt);
Run Code Online (Sandbox Code Playgroud)
第3步:我现在有一个正确的密码来匹配这个变量:$password['hash'].所以我在数据库上进行第二次查找,看看输入的用户名和散列密码是否一起返回一行.如果是,那么用户的凭证是正确的.
步骤4:为了在用户凭证通过后记录用户,我生成一个随机唯一字符串并对其进行哈希处理:
$random_string = uniqid(rand(0, 1000000));
$session_key = hash('sha512', …Run Code Online (Sandbox Code Playgroud) 偏见的定义是什么:
当max超过2 ^ 32时,mt_rand()返回值的分布偏向于64位版本的PHP上的偶数.
如果这是在四舍五入的替代打破规则中所述的那种偏见,我认为这不重要(因为偏见不是真的可见).
除了mt_rand()被宣称是比快四倍rand(),只是在前面增加3个字符!
假设mt_rand可用,使用它的缺点是什么?
我正在尝试使用php制作长度正好为15个字符且正面的随机数字.我试过rand(100000000000000, 900000000000000)但它仍然会产生负数和小于15的数字.是否还有其他功能我可以做到这一点,或者我应该只使用rand(0, 9)15次并连接结果?