php会话逻辑错误

时间:2017-11-12 14:27:10

标签: php session

我正在做php上的tictactoe for homework,我坚持从播放器到播放器的逻辑,因为它总是在单元格上放置一个X,并且每当提交按钮被击中时都不会更改为O.我的问题是如何让它发挥作用。

到目前为止我的目的是:

$position = filter_input(INPUT_GET, 'Position');

$player = "C_$position";

//Problem

if(!isset($_SESSION[$player])){ //Also tried the function empty before using !isset

    $_SESSION[$player]="X"; 
}
if($_SESSION[$player]=="X"){

    $_SESSION[$player]="O";
}

if($_SESSION[$player]=="O"){

    $_SESSION[$player]="X";
}
//END PROBLEM

我一直在寻找答案,但我找到了Initialize the variable only once in php,但是当我将其应用到我的php代码时,它无法正常工作。如果有人得到解决方案,我会非常感激。

1 个答案:

答案 0 :(得分:0)

使用else而不是其他if,因为第二个if您将恢复为原始值。目前你遇到一个TRUE条件链,每个条件都满足,所以你最终得到最后一个条件的值。您可以在此处查看代码的粗略演示,https://3v4l.org/Lv7CK

这应该纠正你的逻辑。

$position = filter_input(INPUT_GET, 'Position');
$player = "C_$position";
if(empty($_SESSION[$player]) || $_SESSION[$player]=="O"){
     $_SESSION[$player]="X";
} else {
     $_SESSION[$player]="O";
}

如果会话未设置或当前播放器为X,则应将播放器设置为O,否则会将播放器设置为O(这假设在那里)如果有多个使用$player,或者可能是elseif,则switch只有两个值。