2011-12-27 86 views
-1

我搜索了這個網站上的類似問題,並且嘗試了十多個建議,但只有一點點接近解析。會話變量爲空

我開始使用HTML & PHP,所以這是一個非常簡單的幾個腳本。

我正在設置一個數學問題的數組(測試我9歲的兒子)。 第一個腳本「mathtest.php」設置數組並在$ _session全局變量中設置了一些變量,然後表單將問題的答案提交給「mathtest1.php」。

當我到達「mathtest1.php」時,My $ _session變量丟失。

請幫忙。我知道我可以用餅乾做點什麼,但我真的想提高我對會話的理解。

這裏的2個腳本:

「mathtest.php」:

<?php 
session_start(); 
?> 
<html> 
<title>Math Test</title> 
<head>Math Test</head> 
<body> 
<?php 
$arrayindex = 0; 

for ($L = 1; $L <= 12; $L++) { 
    for ($R = 12; $R >= 1; $R--) { 
     $setupquestions[$arrayindex] = $L.'*'.$R; 
     $arrayindex++; 
    } 
} 

$_session["questions"] = $setupquestions; 
$_session["randomkey"] = array_rand($_session["questions"],1); 

?> 

<form action="mathtest1.php" method="post"> 
    What is <?php echo $_session["questions"][$_session["randomkey"]]." ?" ?> 
    <input type="text" name="answer"> 
    <input type="submit" name = "submit"> 
</form> 

</body> 
</html> 

如預期,但下面的腳本都是空值,會話變量我「米試圖訪問上述作品腳本以及使用

「mathtest1.php」:

<?php 
session_start(); 
?> 
<html> 
<body> 

<?php 

if(isset($_POST['submit'])) 
{ 
    $answer = $_POST['answer']; 
    $result = eval("return $_session[questions]$_session[randomkey];"); 
    echo "result = ".$result."<br />"; 
    if ($answer == $result) { 
     echo "Correct!!"; 
    } 
    else { 
     echo "WRONG!!"; 
    } 
} 

$_session["randomkey"] = array_rand($_session["questions"],1); 

?> 
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>"> 
    What is <?php echo $_session["questions"][$_session["randomkey"]]." ?" ?> 
    <input type="text" name="answer"> 
    <input type="submit" name = "submit"> 
</form> 


</body> 

</html> 

其他詳情: OS X,Chrome瀏覽器,最新版本的PHP XAMPP安裝&腳本與XAMPP位於同一檯筆記本電腦上,而不是位於外部服務器上。 會話cookie爲ON ... Trans_ID爲ON 我已閱讀&寫入會話保存路徑。

回答

4

$_SESSION應該是大寫。

+0

Savid打我! – Virendra 2011-12-27 01:13:47

+0

認真嗎? .... 有用! ...我想我已經瞭解到編程是非常直接的。非常感謝。 – Loumont 2011-12-27 03:13:17

+0

@Loumont,因爲這回答了你的問題,你應該用這個答案左邊的複選標記來標記它。 – jlafay 2011-12-27 17:26:29

0

不像function names ...

function bar(){ 
} 

function Bar(){ 
} 

...

Fatal error: Cannot redeclare Bar() (previously declared in C:\tmp\test.php:3) in C:\tmp\test.php on line 7 

... variable names是區分大小寫的PHP:

$foo = 1; 
$Foo = 2; 
$FOO = 3; 
var_dump($foo, $Foo, $FOO); 

...

int(1) 
int(2) 
int(3) 

這也適用於predefined variables,包括$_SESSION