簡體   English   中英

我做錯了什么? “會話開始”

[英]What I'm doing wrong? "session start"

下面的第一個代碼應該顯示 10-400 之間的隨機數

第二個代碼應該顯示 400-3000 之間的隨機數

如果我單獨使用一個代碼,它將正常工作。 但是,如果我在一個頁面中發布這樣的兩個代碼,則第二個代碼將適用於 10-400 之間的第一個代碼。

我做錯了什么?

這是我的代碼:

<?php
session_start();
if(isset($_SESSION['num'])){
    $num = mt_rand($_SESSION['num']-5, $_SESSION['num']+5);
}else{
    $num = mt_rand(10, 400);
}
echo $num . " Gold coin"; 
$_SESSION['num'] = $num;
?>

<?php
session_start();
if(isset($_SESSION['num'])){
    $num = mt_rand($_SESSION['num']-5, $_SESSION['num']+5);
}else{
    $num = mt_rand(400, 3000);
}
echo $num . " Pink Coin"; 
$_SESSION['num'] = $num;
?>

這是因為您對兩段代碼使用相同的會話變量,並且在第一段之后設置$_SESSION['num'] (這將是 10 到 400 之間的值),所以第二段代碼將取第一個if分支並在第一個值 -5 和 +5 之間生成一個值(因此它將介於 5 和 405 之間)。 您應該為每種硬幣類型使用不同的會話變量,例如

session_start();
if(isset($_SESSION['gold'])){
    $gold= mt_rand($_SESSION['gold']-5, $_SESSION['gold']+5);
}else{
    $gold= mt_rand(10, 400);
}
echo $gold. " Gold coin"; 
$_SESSION['gold'] = $gold;
if(isset($_SESSION['pink'])){
    $pink= mt_rand($_SESSION['pink']-5, $_SESSION['pink']+5);
}else{
    $pink= mt_rand(10, 400);
}
echo $pink. " Pink coin"; 
$_SESSION['pink'] = $pink;

請注意,您應該只調用session_start()一次。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM