我有一个网站向新访客和商店显示一个随机数,该数字存储在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,但我找不到解决这个问题所需的解决方案。
任何想法?
答案 0 :(得分:0)
我想我误解了这一点,但你有没有尝试过更换:
$places = $places - $decrease;
有了这个:
if ( $decrease > $places ) {
$places = 0
} else {
$places = $places - $decrease;
}
答案 1 :(得分: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;
}
?>
答案 2 :(得分: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);
}
如果您的目标是将场地限制为零,那么其他答案比我的更简单。如果保持随机数是必要的,我认为增加会更好。