生成无法在实时服务器上运行的随机数

时间:2015-04-23 06:06:02

标签: php

这让我困惑了好几个小时了。以下是有问题的代码。它在我的本地服务器上工作得很好但是当迁移到实时服务器时,我看到的问题是生成并存储为int类型的随机数(与本地相同)根本不是随机的。所有条目都具有完全相同的编号(2147483647)。

我不知道为什么它在本地运行但不会在实时服务器上运行。这是PHP的确切版本。我已经研究了几个小时了,找不到东西。

我确信这是一个简单的疏忽,并想在这里张贴,你们中有一位才华横溢的开发者可以指出它吗?

if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['submit'])) 
{
date_default_timezone_set("America/New_York");
$first_name = ucwords(addslashes(strip_tags($_POST['firstName'])));
$last_name = ucwords(addslashes(strip_tags($_POST['lastName'])));
$age = addslashes(strip_tags($_POST['age']));
$location = addslashes(strip_tags($_POST['state']));
$description = addslashes(strip_tags($_POST['desc']));
$date_added = date("Y-m-d");
$aka = ucwords(addslashes(strip_tags($_POST['aka'])));

$offender_id = mt_rand(1, 99999999999);

//offense pertinent 
$date_of_offense = addslashes(strip_tags($_POST['date_of_offense']));
$offense = addslashes(strip_tags($_POST['offense']));
$added_by = addslashes(strip_tags($_POST['added_by']));

if(empty($aka))
{
    $aka='None Known';
}


if($first_name&&$last_name&&$age&&$location&&$description&&$date_of_offense&&$offense&&$added_by)
   {
       include('../includes/db_cred.php');

        $sql = "INSERT INTO offenders VALUES ('', '0', '$offender_id', '$first_name', '$last_name', '$aka', '$age', '$location', '$description', 'na', 'na', 'na', '$added_by', '$date_added')";

1 个答案:

答案 0 :(得分:0)

您正在进行以下PHP调用:

$offender_id = mt_rand(1, 99999999999);

但是,mt_rand()似乎能够在您的服务器上接受的最大值是2 ^ 32 = 2147483647,这是您一直看到的值。

从PHP手册:

  

整数的大小取决于平台,尽管最大值大约为20亿(通常是32位签名)