2017-01-10 5 views
0

私はスロットマシンを実行すると、ジャックポットを獲得し、ページを更新したり、ボタンをクリックして、それは言う:セッション - 未定義のインデックス

お知らせ:未定義のインデックスは「gokken」

しかし、もう一度リフレッシュすると、私は新しいジャックポットを得るまでエラーが消えます。
なぜそれが起こっていますか?

<?php 
session_start(); 
//session_destroy(); 
class Player 
{ 

    public $name; 
    public $age; 

    function __construct() 
    { 
     $this->name = 'Harm'; 
     $this->age = 18; 
    } 

    public function setName($name) 
    { 
     return $this->name = $name; 
    } 

    public function setAge($age) 
    { 
     return $this->age = $age; 
    } 

    public function getAge($age) 
    { 
     if ($age < 18) 
     { 
      return "U mag niet spelen! <br/>"; 
     } else 
     { 
      return 'Welkom ' . $this->name . ', u bent 18 jaar of ouder! <br/><br/>'; 
     } 
    } 

} 

$player = new Player(); 

echo $player->getAge($player->age); 

class Gokautomaat 
{ 

    public function Automaat() 
    { 
     $r1 = rand(0, 1); 
     $r2 = rand(0, 1); 
     $r3 = rand(0, 1); 
     $inzet = 100; 
     echo $r1 . $r2 . $r3 . '<br/><br/>'; 


     if ($r1 == $r2 && $r3 == $r2) 
     { 
      echo 'U heeft de jackpot gewonnen!!<br><br> + €5000 <br/><br/>'; 
      $_SESSION["gokken"] = $_SESSION["gokken"] + 5000; 
      echo 'Cash: $' . $_SESSION["gokken"]; 
      session_destroy(); 
     } else 
     { 
      //$_SESSION["gokken"] = $_SESSION["gokken"]; 
      echo "U heeft niks gewonnen. <br/><br/> Bedrag - €$inzet" . '<br/><br/>'; 
      $_SESSION["gokken"] = $_SESSION["gokken"] - $inzet; 
      echo 'Cash: €' . $_SESSION["gokken"]; 
     } 
    } 

    public function Gokken() 
    { 
     if ($_GET["play"]) 
     { 
      if (!isset($_SESSION["gokken"])) 
      { 
       $_SESSION["gokken"] = 1000; 
      } 

      echo '<form action=' . $_SERVER['PHP_SELF'] . ' method=get>'; 
      echo '<input type=hidden name=play value=gokken> 
       <input type=submit value="Gok!"></form>'; 
     } else 
      { 
      echo '<form action=' . $_SERVER['PHP_SELF'] . ' method=get>'; 
      echo '<input type=hidden name=play value=gokken> 
       <input type=submit value="Gok!"></form>'; 
      } 

     exit(); 
    } 

} 

$gokautomaat = new Gokautomaat; 

echo $gokautomaat->Automaat(); 
echo $gokautomaat->Gokken(); 
?> 
+0

あなたが呼び出す必要はありません。通常のコードからのsession_destroy()セッションデータを破棄するのではなく、$ _SESSION配列をクリーンアップします。 –

答えて

0

あなたはそれを最初に起動したとき$_SESSION["gokken"]が設定されていないからです。あなたが見るように、そこにその設定を解除値読み取ろう行、以下のとおりです。

$_SESSION["gokken"] = $_SESSION["gokken"] + 5000; 

は、その値はGokken()で初期化されますが、それは実行後Automaat():

echo $gokautomaat->Automaat(); 
echo $gokautomaat->Gokken(); 

、以来

これはセッション変数で、次回に設定されたままです。 これは複数の方法で解決できます。 たとえば、初期化が最初に実行されることを確認します。

それとも、通知をオフにすることができます:

error_reporting(E_ALL & ~E_NOTICE); 

それとも、単に「@」演算子で、特定の行のためのすべてのエラーを非表示にすることができます:

@$_SESSION["gokken"] = $_SESSION["gokken"] + 5000;