0

我有一个网站,它向新访问者显示一个随机数并将该数字存储在 cookie 中。

如果用户刷新页面,那么它会提取 cookie 值并在显示之前减去 1 和 3 之间的随机数。

到目前为止,这是我一起破解的:

<?php
if (isset($_COOKIE['places'])) {
$places=$_COOKIE['places'];
$decrease=mt_rand(1, 3);
$places=$places-$decrease;
$expire=time()+60*60*24*30;
setcookie('places', $places, $expire);
}
else {
$randomString = mt_rand ( 11 , 23 );
$expire=time()+60*60*24*30;
setcookie('places', $randomString, $expire);
$places=$randomString;
}
?>

我遇到的问题是,如果你继续刷新(我怀疑有人会这样做),它会继续从 0 变为负数。我浏览了 php.net,但找不到阻止这种情况发生所需的解决方案。

有任何想法吗?

4

3 回答 3

0

我想我误读了这个,但是您是否尝试过替换:

$places = $places - $decrease;

有了这个:

if ( $decrease > $places ) {
    $places = 0
} else {
    $places = $places - $decrease;
}
于 2013-08-23T22:10:07.127 回答
0

这应该这样做:

<?php
if (isset($_COOKIE['places'])) {
    $places=$_COOKIE['places'];
    $decrease=mt_rand(1, 3);
    $places=$places-$decrease;
    if($places < 0) 
      $places = 0;
    $expire=time()+60*60*24*30;
    setcookie('places', $places, $expire);
}
else {
    $randomString = mt_rand ( 11 , 23 );
    $expire=time()+60*60*24*30;
    setcookie('places', $randomString, $expire);
    $places=$randomString;
}
?>
于 2013-08-23T22:11:03.973 回答
0

这样的事情怎么样?如果 $places - $decrease 将产生负数,请改为添加该数字。我认为它应该达到你想要的效果......

if (isset($_COOKIE['places'])) {
    $places=$_COOKIE['places'];
    $decrease=mt_rand(1, 3);
        if(($places - $decrease) <= 0) {
            $places = $places + $decrease;
        } else {
            $places=$places-$decrease;
        }
    $expire=time()+60*60*24*30;
    setcookie('places', $places, $expire);
}

如果您的目标是将下限限制为零,那么其他答案比我的简单。如果保持随机数是必不可少的,我认为添加会更好。

于 2013-08-23T22:12:47.800 回答