我有一个网站,它向新访问者显示一个随机数字,并将该数字存储在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,但找不到阻止这种情况发生的解决方案。
有什么想法吗?
我想我看错了,但你试过替换吗:
$places = $places - $decrease;
有了这个:
if ( $decrease > $places ) {
$places = 0
} else {
$places = $places - $decrease;
}
这应该做到:
<?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;
}
?>
这样的东西怎么样?如果$places-$reduce将导致一个负数,请添加该数字。我认为它应该达到你想要的效果。。。
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);
}
如果你的目标是将下限限制在零,那么其他答案比我的简单。如果保持一个随机数是必要的,我认为加法会更好。