0

新しい訪問者に乱数を表示し、その番号を Cookie に保存する Web サイトがあります。

ユーザーがページを更新すると、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 に答える