2017-01-10 45 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;