首頁  >  文章  >  後端開發  >  php 提交一次表單rand如果不覆蓋之前的?

php 提交一次表單rand如果不覆蓋之前的?

WBOY
WBOY原創
2016-09-05 08:59:581220瀏覽

<code>$s1 = rand(1,9);
$s2 = rand(1,9);

if($_POST['daan']){
    if($_POST['daan'] == $s1+$s2){
        $txt = '正确';
    }else{
        $s = $s1 + $s2;
        $txt = '错,正确答案是' .$s;
    }
}
</code>

?>

<code><?=$s1?> + <?=$s2?> = <input type="input" name="daan" />
<?=isset($txt) ? $txt : '请回答'?>
<input type="submit" name="button" id="button" value="提交" /></code>

程式碼如上,現在的情況是提交表單後,rand值為提交後的值,造成答案錯誤,請問如果做才能不覆蓋上次的rand值呢?

回覆內容:

<code>$s1 = rand(1,9);
$s2 = rand(1,9);

if($_POST['daan']){
    if($_POST['daan'] == $s1+$s2){
        $txt = '正确';
    }else{
        $s = $s1 + $s2;
        $txt = '错,正确答案是' .$s;
    }
}
</code>

?>

<code><?=$s1?> + <?=$s2?> = <input type="input" name="daan" />
<?=isset($txt) ? $txt : '请回答'?>
<input type="submit" name="button" id="button" value="提交" /></code>

程式碼如上,現在的情況是提交表單後,rand值為提交後的值,造成答案錯誤,請問如果做才能不覆蓋上次的rand值呢?

<code>session_start();
if($_POST['daan']){
    if($_POST['daan'] == $_SESSION['result']){
        $txt = '正确';
    }else{
        $txt = '错,正确答案是' .$_SESSION['result'];
    }
}else{
    $s1 = rand(1,9);
    $s2 = rand(1,9);
    $_SESSION['result'] = $s1 + $s2;
}</code>

你提交表單後, 該頁面會重新刷新, $s1$s2會重新獲取一個隨機值.
那解決問題的方法, 就是讓它刷新的時候不改變值. 你放在session 裡面就行了.

<code class="php">session_start();
$s1 = $_SESSION['s1'] = rand(1, 9);
$s2 = $_SESSION['s2'] = rand(1, 9);

//然后下面的判断用$_SESSION的值就行了</code>

刷新的時候,$_SESSION[]跟變數一樣,會重新取得一個新值。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn