PHP游戏会话不工作

PHP游戏会话不工作,php,session,input,Php,Session,Input,我需要一个PHP会话来存储一个变量$CurrentPos,用于播放器的位置,但不管出于什么原因,它都不起作用。这可能是因为我实现了错误的代码,但我就是想不出来 <?php session_start(); include_once 'index.php'; $World = simplexml_load_file("gameworld.xml"); $_SESSION["CurrentPos"] = 0 ; $CurrentPos = $_SESSION["CurrentPos"]; pr

我需要一个PHP会话来存储一个变量$CurrentPos,用于播放器的位置,但不管出于什么原因,它都不起作用。这可能是因为我实现了错误的代码,但我就是想不出来

<?php
session_start();
include_once 'index.php';
$World = simplexml_load_file("gameworld.xml");
$_SESSION["CurrentPos"] = 0 ;
$CurrentPos = $_SESSION["CurrentPos"];
print "<br>";
printplace();
function printplace() {
    GLOBAL $World, $CurrentPos;
    $Room = $World->ROOM[$CurrentPos];
    $Name = $Room->NAME;
    $Desc = wordwrap((string)$Room->DESC);
    print "$Name<br>";
    print str_repeat('-', strlen($Name));
    print "<br>$Desc<br>";
    if ((string)$Room->NORTH != '-') {
        $index = (int)$Room->NORTH;
        print "North: {$World->ROOM[$index]->NAME}<br>";
    }
    if ((string)$Room->SOUTH != '-') {
        $index = (int)$Room->SOUTH;
        print "South: {$World->ROOM[$index]->NAME}<br>";
    }
    if ((string)$World->ROOM[$CurrentPos]->WEST != '-') {
        $index = (int)$Room->WEST;
        print "West: {$World->ROOM[$index]->NAME}<br>";
    }
    if ((string)$World->ROOM[$CurrentPos]->EAST != '-') {
        $index = (int)$Room->EAST;
        print "East: {$World->ROOM[$index]->NAME}<br>";
    }
    print "<br>";
}

$input = explode(' ', $input);
print "<br>";
foreach ($input as $command) {
    switch ($command) {
        case 'north':
            if ((string)$World->ROOM[$CurrentPos]->NORTH != '-') {
                $CurrentPos = (int)$World->ROOM[$CurrentPos]->NORTH;
                printplace() ;
            } else {
                print "You cannot go north!<br>";
            }
            break;
        case 'south':
            if ((string)$World->ROOM[$CurrentPos]->SOUTH != '-') {
                $CurrentPos = (int)$World->ROOM[$CurrentPos]->SOUTH;
                printplace() ;
            } else {
                print "You cannot go south!<br>";
            }
            break;
        case 'west':
            if ((string)$World->ROOM[$CurrentPos]->WEST != '-') {
                $CurrentPos = (int)$World->ROOM[$CurrentPos]->WEST;
                printplace() ;
            } else {
                print "You cannot go west!<br>";
            }
            break;
        case 'east':
            if ((string)$World->ROOM[$CurrentPos]->EAST != '-') {
                $CurrentPos = (int)$World->ROOM[$CurrentPos]->EAST;
                printplace() ;
            } else {
                print "You cannot go east!<br>";
            }
            break;
        case 'look':
            printplace() ;
            break;
        default:
            print "not a valid command... <br>";
            break;
    }
}
print "<br>Thanks for playing!<br>";
?>
房间[$CurrentPos];
$Name=$Room->Name;
$Desc=wordwrap((字符串)$Room->Desc);
打印“$Name
”; 打印stru重复('-',strlen($Name)); 打印“
$Desc
”; 如果((字符串)$Room->NORTH!='-'){ $index=(int)$Room->NORTH; 打印“北:{$World->ROOM[$index]->NAME}
”; } 如果((字符串)$Room->SOUTH!='-'){ $index=(int)$Room->SOUTH; 打印“南方:{$World->ROOM[$index]->NAME}
”; } 如果((字符串)$World->ROOM[$CurrentPos]->WEST!='-'){ $index=(int)$Room->WEST; 打印“西:{$World->ROOM[$index]->NAME}
”; } 如果((字符串)$World->ROOM[$CurrentPos]->EAST!='-'){ $index=(int)$Room->EAST; 打印“东:{$World->ROOM[$index]->NAME}
”; } 打印“
”; } $input=分解(“”,$input); 打印“
”; foreach($input as$命令){ 开关($命令){ 案件‘北’: 如果((字符串)$World->ROOM[$CurrentPos]->NORTH!='-'){ $CurrentPos=(int)$World->ROOM[$CurrentPos]->NORTH; printplace(); }否则{ 打印“你不能北上!”; } 打破 “南部”案例: 如果((字符串)$World->ROOM[$CurrentPos]->SOUTH!='-'){ $CurrentPos=(int)$World->ROOM[$CurrentPos]->SOUTH; printplace(); }否则{ 打印“你不能往南走!
”; } 打破 “西部”案例: 如果((字符串)$World->ROOM[$CurrentPos]->WEST!='-'){ $CurrentPos=(int)$World->ROOM[$CurrentPos]->WEST; printplace(); }否则{ 打印“你不能往西走!
”; } 打破 案件‘东’: 如果((字符串)$World->ROOM[$CurrentPos]->EAST!='-'){ $CurrentPos=(int)$World->ROOM[$CurrentPos]->EAST; printplace(); }否则{ 打印“你不能向东!
”; } 打破 “看”一案: printplace(); 打破 违约: 打印“不是有效的命令…
”; 打破 } } 打印“
感谢您的播放!
”; ?>
出于某种原因,我的session变量实际上不起作用——看看我的意思(我真的不知道如何解释,我是一个PHP新手:p)


非常感谢您的帮助。

您需要将会话设置为交换机机箱内的当前位置。每行之后(例如):

添加此行:

$_SESSION['CurrentPos'] = $CurrentPos;

每次调用此脚本时,您都将会话重置为0。因此,我如何仅在第一次将其设置为0?您可以更改$u会话[“CurrentPos”]=0;到$\u会话[“CurrentPos”]=(isset($\u会话['CurrentPos'])?$\u会话['CurrentPos']:0);还是不行。。。?我将其设置为
$\u会话[“CurrentPos”]=(isset($\u会话['CurrentPos'])?$\u会话['CurrentPos']:0)但它仍然有同样的问题。非常感谢!工作得很有魅力。
$_SESSION['CurrentPos'] = $CurrentPos;