2011-12-27 4 views
-1

私はこのサイトの同様の問題のダースの提案を検索して試しましたが、resolutonに少しだけ近づきました。セッション変数はヌルです

私は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> 

予想通り上記のスクリプトは動作しますが、以下のスクリプトがアクセスしようとしてセッション変数I "mに対してnull値を持っているが、 。そして、使用

"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と同じラップトップにあり、外部のサーバーではありません。 セッションクッキーがONになっています ... Trans_IDがONです セッション保存パスへの書き込みアクセスは&です。

答えて

4

$_SESSION大文字にする必要があります。 function names ...

function bar(){ 
} 

function Bar(){ 
} 

とは異なり

+0

Savidが私を打つ! – Virendra

+0

真剣に? .... できます! ...私はプログラミングがとてもリテラルであることを学んだと思います。どうもありがとう。 – Loumont

+0

@ルーモント、これはあなたの質問に答えたので、この答えの左側にあるチェックマークを付ける必要があります。 – jlafay

0

...

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を含む)。

関連する問題