重置/停止会话PHP

时间:2014-02-03 15:31:58

标签: php session

我已经开始使用尽可能多的PHP制作BlackJack游戏,现在我已经有了这个:

<?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

我使用这个脚本第一次接触会话。所以我在结束/重置我的会话时会有点失落,如果我可以将它绑定到一个按钮。

总结我的问题:

会话需要在刷新或关闭页面时重置/停止。

打开页面时不应绘制1张标准卡。 (我宁愿拥有0和一个可以添加2的按钮,也许是一个开始按钮或其他东西)

每当最后一张牌从我的阵列中抽出时,会话都需要自动停止。 (这并不重要,因为在任何情况下,一个二十一点的玩家都不可能持有所有牌)

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果我理解,您希望每次用户加载页面时都清理会话变量。

如果这是您的问题,您只需在页面开头使用session_destroy()

您也可以使用unset方法取消设置所有会话变量。