我做错了什么? “会话开始”

时间:2019-03-25 22:01:32

标签: php

下面的第一个代码应显示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;
?>

1 个答案:

答案 0 :(得分:1)

这是因为您在这两段代码中使用了相同的会话变量,并且在第一段代码之后设置了$_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()