Если вы хотите, чтобы $ health следовал за вами на следующую страницу, используйте сеансы.
Руководство по PHP для сессий
Обычно вы начинаете свои страницы с
session_start();
if(isset($_SESSION['health'])) {
$health = $_SESSION['health'];
}
else {
//However you normally set health when the user is just starting
}
, который будет загружать значение здоровья с предыдущей страницы, если вы установите его следующим образом:
$_SESSION['health'] = $health;
PHP-скрипты автоматически пишут и закрывают сеансы, поэтому вам не нужно беспокоиться ни о чем, кроме создания переменной в глобальном массиве сеансов. Только не забудьте начать сеансы, когда вы хотите получить данные в массиве сеансов с предыдущей страницы. Однако ваши пользователи должны будут принимать файлы cookie.
Если вы продолжаете использовать скрытые поля, игрок может изменить эту информацию, прежде чем отправлять ее вам (к тому же, им будет труднее отслеживать).
редактирование:
Однако ваши ошибки заключаются в том, что вы сбрасываете свое здоровье до 50 в 5-й строке кода, не используете правильное имя переменной для здоровья из запроса и у вас нет никаких тегов формы.
<?php
if(isset($_REQUEST['hdnMonsterHealth']))
$health = $_REQUEST['hdnMonsterHealth'];
else
$health = 50;
$attack = rand(10,20);
$defend = rand(1,9);
$damage = rand(1,5);
if ($attack > $defend) {
print "<p>Jim hit the robot for $damage.</p>";
$health = $health - $damage;
print "<p>The robot has $health health remaining.</p>";
} else {
print "<p>Jim missed.</p>";
print "<p>The robot has $health health remaining.</p>";
} // end if statement
print <<<HERE
<form method="post">
<input type="text"
name="openMonsterHealth"
value="$health">
<input type="hidden"
name="hdnMonsterHealth"
value="$health">
<input type="submit"
value="click to continue">
</form>
HERE;
?>
Редактировать: Извините за все странности, форматирование нарушается этим блоком кода, поэтому мне пришлось вручную вставлять каждый <
в код с <
. Этот код работает сейчас, однако.
У вас все еще есть ошибка с отрицательным здоровьем. Я не пишу твою игру для тебя.