繁体   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