Php 生成一个随机数在实时服务器上不起作用

Php 生成一个随机数在实时服务器上不起作用,php,Php,这让我困惑了好几个小时。下面是有问题的代码。它在我的本地服务器上运行得非常好,但是当迁移到live服务器时,我看到的问题是生成并存储为int-type(与本地服务器相同)的随机数根本不是随机数。所有条目的编号完全相同(2147483647) 我不知道为什么它可以在本地工作,但不能在实时服务器上工作。这正是PHP的版本。我已经研究了几个小时了,什么也找不到 我相信这是一个简单的疏忽,我想把它贴在这里,你们当中一个头脑聪明的开发人员可以指出吗 if($_SERVER['REQUEST_METHOD'

这让我困惑了好几个小时。下面是有问题的代码。它在我的本地服务器上运行得非常好,但是当迁移到live服务器时,我看到的问题是生成并存储为int-type(与本地服务器相同)的随机数根本不是随机数。所有条目的编号完全相同(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')";

您正在进行以下PHP调用:

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

从PHP手册:

整数的大小取决于平台,尽管通常的最大值约为20亿(即32位有符号)


请注意,
mt_rand
调用中的
max
值远远高于可能的最大值,恰好是
2147483647
。我还假设,
$incriber\u id
应该是唯一的,在这种情况下,我不建议为这些生成随机数。谢谢先生!这应该可以解决问题,感谢您的提示。有趣的是,本地计算机上的
mt_rand
接受的范围大于2^32,但服务器不接受。碰巧在测试中,存储的值从未超过该范围。