PHP $ GLOBALS теряет значения

Я очень новичок в PHP. Для задания класса нам нужно сделать игру Tic Tac Toe. Пока это мой код:

<html>
<body>
<h1>Tic Tac Toe</h1>

<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="input">
<input type="submit" name="submit">
</form>

<?php
//Display Determinations

//Top Left
if (!ISSET($_POST['submit'])) {
$GLOBALS['ul_truefalse'] = true;
$GLOBALS['turn'] = 1;
$this_happened = "!isset";
}
if (ISSET($_POST['submit'])) {
$GLOBALS['turn'] = $GLOBALS['turn'] + 1;
if ($GLOBALS['turn'] == 3) {
$GLOBALS['turn'] = 1;
}
}
if ($GLOBALS['ul_truefalse'] == true) {
$GLOBALS['ul_display'] = "UL";
if (ISSET($_POST['input']) and $_POST['input'] == "ul" and $GLOBALS['turn'] == 1) {
$GLOBALS['ul_display'] = "X";
$GLOBALS['ul_truefalse'] = false;
$this_happened = "p1 ul";
}
if (ISSET($_POST['input']) and $_POST['input'] == "ul" and $GLOBALS['turn'] == 2) {
$GLOBALS['ul_display'] = "O";
$GLOBALS['ul_truefalse'] = false;
}
}

echo "Player " . $GLOBALS['turn'] . ", it's your turn!";
echo $this_happened;
?><table border="1" width="40%">
<tr>
<td><?php echo $GLOBALS['ul_display'] ?></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table></body>
</html>

Вот результат (левая сторона — когда страница загружена, правая сторона — когда игрок 1 вводит «ul»): http://i.imgur.com/G0JaXYY.png

Проблема в том, когда if (!ISSET($_POST['submit'])) { становится ложным, строки, определенные в том, что если оператор теряет свои значения, вызывая неопределенные переменные ошибки. Я пытался хранить их в скрытой форме, но это не решило проблему. Я отправил свой код человеку с форума, и он сказал, что он работает. Почему это происходит? Как это исправить?

0

Решение

Попробуй это:

<html>
<body>
<h1>Tic Tac Toe</h1>

<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<input type="text" name="input">
<input type="submit" name="submit">
</form>

<?php
if(!session_id())
session_start();

//Display Determinations

//Top Left
if (!ISSET($_POST['submit'])) {
$_SESSION['ul_truefalse'] = true;
$_SESSION['turn'] = 1;
$this_happened = "!isset";
}
if (ISSET($_POST['submit'])) {
$_SESSION['turn'] = $_SESSION['turn'] + 1;
if ($_SESSION['turn'] == 3) {
$_SESSION['turn'] = 1;
}
}
if ($_SESSION['ul_truefalse'] == true) {
$_SESSION['ul_display'] = "UL";
if (ISSET($_POST['input']) and $_POST['input'] == "ul" and $_SESSION['turn'] == 1) {
$_SESSION['ul_display'] = "X";
$_SESSION['ul_truefalse'] = false;
$this_happened = "p1 ul";
}
if (ISSET($_POST['input']) and $_POST['input'] == "ul" and $_SESSION['turn'] == 2) {
$_SESSION['ul_display'] = "O";
$_SESSION['ul_truefalse'] = false;
}
}

echo "Player " . $_SESSION['turn'] . ", it's your turn!";
echo $this_happened;
?><table border="1" width="40%">
<tr>
<td><?php echo $_SESSION['ul_display'] ?></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
</tr>
</table></body>
</html>
-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]