Мне нужна сессия PHP для хранения переменной $ CurrentPos для местоположения игрока, но по какой-то причине она не работает. Вероятно, потому, что я неправильно реализовал код, но я просто не могу понять это.PHP сеанс игры не работает
<?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>";
?>
По какой-то причине, моя сессия переменная не может работать - смотреть на my game, чтобы увидеть, что я имею в виду (я не знаю, как это объяснить, я РНР новичку: P).
Любая помощь приветствуется.
Вы сбрасывая сеанс 0 каждый раз, когда этот сценарий называется. – versalle88
Так как бы я только установил его в 0 в первый раз? – dumpong
Вы можете изменить $ _SESSION ["CurrentPos"] = 0; to $ _SESSION ["CurrentPos"] = (isset ($ _ SESSION ['CurrentPos']) $ $ _SESSION ['CurrentPos']: 0); – versalle88