Я начал делать BlackJack игру, используя как можно больше PHP, насколько это возможно, и теперь у меня есть это:Сброс/Остановка сеанса PHP
<?php
session_start();
// cards on pile
if(!isset($_SESSION["pile"])) $_SESSION["pile"] = array(
1 => 1,
2 => 2,
3 => 3,
4 => 4,
5 => 5,
6 => 6,
7 => 7,
8 => 8,
9 => 9,
10 => 10,
'Jack' => 10,
'Queen' => 10,
'King' => 10,
'Ace' => 11);
// cards in hand
if(!isset($_SESSION["hand"])) $_SESSION["hand"] = array();
// draw a card from the pile into the hand
function draw_card() {
$card = array_rand($_SESSION["pile"]);
$_SESSION["hand"][$card] = $_SESSION["pile"][$card];
unset($_SESSION["pile"][$card]);
}
function list_hand() {
foreach($_SESSION["hand"] as $card=>$points) {
echo 'Card: ' . $card . '<br>';
echo 'Points: ' . $points . '<br><br>';
}
}
// detect which form was triggered
function FORM($value) {
return isset($_POST["form"]) && $_POST["form"]==$value;
}
// handle the draw form
if(FORM("draw")){
draw_card();
list_hand();
}
?>
<form method="post">
<input type="hidden" name="form" value="draw">
<input type="submit" value="Draw a card">
</form>
Извините за сбросив бомбу кода на вас, ребята.
Проблема в том, что при открытии этой страницы начинается сеанс. И дайте мне стандартную 1 карту, каждый раз, когда я обновляюсь. (он будет складываться) Я знаю, что это точка сеанса в первую очередь, но не точка моей страницы. Мне нужно, чтобы сеанс заканчивался, когда страница обновляется или закрывается страница. Мне не повезло в Интернете. Пробовал вещи как onUnload и многое другое.
Во-вторых, поскольку он продолжает добавлять карты до тех пор, пока все 14 не будут нарисованы. Он добавит один последний Card: Points:
и вверху скажет Notice: Undefined index
.
У меня был первый контакт с сеансами, используя этот сценарий. Так что я немного потерял, когда закончил/сбросил мой сеанс, и если я могу привязать его к кнопке.
Итак, чтобы подвести свои проблемы до:
Session необходимо сбросить/остановки на освежающий или закрытия страницы.
Нельзя нарисовать 1 стандартную карту при открытии страницы. (Я бы предпочел иметь 0 и кнопку, которая добавит 2, может быть, кнопку «Пуск» или что-то еще)
Сессия должна автоматически останавливаться всякий раз, когда последняя карта вытягивается из моего массива. (Это не так важно, потому что ни в коем случае невозможно, чтобы один игрок в блэкджеке мог держать все карты)
Заранее спасибо!
Если вам нужно сбросить сеанс при загрузке каждой страницы, зачем вообще использовать сеанс? – ToBe
Я согласен с @ToBe, вы должны использовать другой механизм для хранения данных, если вам не нужны данные на разных страницах. В противном случае просто уничтожьте сеанс в конце файла. –
вам было бы лучше сделать это (игра с черным гнездом) в JS честно. –