2014-02-03 2 views
0

Я начал делать 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, может быть, кнопку «Пуск» или что-то еще)

Сессия должна автоматически останавливаться всякий раз, когда последняя карта вытягивается из моего массива. (Это не так важно, потому что ни в коем случае невозможно, чтобы один игрок в блэкджеке мог держать все карты)

Заранее спасибо!

+1

Если вам нужно сбросить сеанс при загрузке каждой страницы, зачем вообще использовать сеанс? – ToBe

+0

Я согласен с @ToBe, вы должны использовать другой механизм для хранения данных, если вам не нужны данные на разных страницах. В противном случае просто уничтожьте сеанс в конце файла. –

+0

вам было бы лучше сделать это (игра с черным гнездом) в JS честно. –

ответ

0

Если я понимаю, вы хотите очистить переменные сеанса каждый раз, когда пользователь загружает страницу.

Если это ваша проблема, то вам нужно использовать только session_destroy() в начале страницы.

Вы также можете отключить все свои переменные сеанса с помощью метода отмены.

Смежные вопросы