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

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

WBOY
發布: 2016-09-05 08:59:58
原創
1230 人瀏覽過

<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[]跟變數一樣,會重新取得一個新值。

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板