У меня есть один файл board.php
, который отображает плату на моей веб-странице. Этот файл включает в себя файл boardEngine.php
, который имеет все инициализированные переменные и матрицы, а также каждую функцию, необходимую для вычисления.php include_once и метод get
Я разместил форму в своем board.php
, чтобы я мог ввести свой следующий ход на доске. board.php
код выглядит следующим образом:
<!doctype html>
<html>
<body>
<?php
include_once('boardEngine.php');
?>
<div id='board'>
<?php
if (isset($_GET['move'])) {
checkMove($_POST['queryMove']); // checkMove is from boardEngine.php
}
printBoard(); // function from boardEngine.php
?>
</div>
<form id="moveForm" action="board.php?move" method="post" >
<input type="text" name="queryMove" placeholder="form: 'e2f3' (e2 to f3)" required> </p>
<input type="submit" value=">move!<" >
</form>
</body>
Проблема заключается в том, что, когда я представляю движение, board.php
перезагружается с набором $_GET['move']
. Так как он перезагружен, кажется, что boardEngine.php
снова включается, и все позиции в матрице инициализируются.
Как я понимаю, дело до сих пор, этот шаг представляется, board.php
перезагружается, boardEngine.php
входит в другой раз с каждой позиции сбрасывается, то, так как переменная $_GET['move']
была установлена через форму, один шаг будет вычисляться. После подачи нового шага плата будет сброшена, и последний шаг будет рассмотрен, и так далее.
Я не прав? Как я могу решить эту проблему?
Edit 1: Вот вид моего boardEngine.php кода:
<?php
define("PAWN", 10);
define("KNIGHT", 20);
define("BISHOP", 30);
define("ROOK", 40);
define("QUEEN", 50);
define("KING", 100);
define("B_PAWN", -10);
define("B_KNIGHT", -20);
define("B_BISHOP", -30);
define("B_ROOK", -40);
define("B_QUEEN", -50);
define("B_KING", -100);
$board = array(
array("", 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'),
array(1, B_ROOK, B_KNIGHT, B_BISHOP, B_QUEEN, B_KING, B_BISHOP, B_KNIGHT, B_ROOK),
array(2, B_PAWN, B_PAWN, B_PAWN, B_PAWN, B_PAWN, B_PAWN, B_PAWN, B_PAWN),
array(3, 0, 0, 0, 0, 0, 0, 0, 0),
array(4, 0, 0, 0, 0, 0, 0, 0, 0),
array(5, 0, 0, 0, 0, 0, 0, 0, 0),
array(6, 0, 0, 0, 0, 0, 0, 0, 0),
array(7, PAWN, PAWN, PAWN, PAWN, PAWN, PAWN, PAWN, PAWN),
array(8, ROOK, KNIGHT, BISHOP, QUEEN, KING, BISHOP, KNIGHT, ROOK)
);
function checkMove($query) {
global $board;
if(strlen($query) != 4) {
return "Wrong query!";
}
//...
// Next modfy the $board positions according to rules
}
function printBoard() {
// ...
}
кстати. зачем вам нужен дополнительный параметр $ _GET? is? f (isset ($ _ POST ['queryMove'])) 'недостаточно? – bwoebi
Каждый раз, когда вы загружаете скрипт PHP, он начинается с нового. Все переменные сбрасываются, файлы перезагружаются и т. Д. Единственное, что сохраняется между прогонами, - это переменные сеанса. – Barmar
bwoebi: метод почты довольно достаточно, но не решает мою проблему –