2011-01-27 24 views
3

私は$ _SESSION配列に何かを置く2つのファイルを持っています。

Array 
(
    [0] => Hi 
) 

プリントと似てfile2.phpは私が最初にをfile1に行き、その後、FILE2に移動すると仮定

<?php 
session_start(); 

$_SESSION[] = 'There!'; 

echo '<pre>'; 
print_r($_SESSION); 
echo '</pre>'; 

をfile1する file1.php

<?php 
session_start(); 

$_SESSION[] = 'Hi'; 

echo '<pre>'; 
print_r($_SESSION); 
echo '</pre>'; 

。 FILE2で 印刷$ _SESSION出力

Array 
(
    [0] => Hi 
    [1] => There! 
) 

は私が間違っているでしょうか?

私は注意しなければならないことを言及する必要があります:行0のUnknownで数値キー0をスキップします。 そして、php.iniのregister_globalsがオフに設定されています。

file2は2つのアイテムの配列を出力し、他の人(私のような)は 'hi'アイテムを失います。これは、文字列ではなく、セッション配列のインデックスとして数字を使用する場合にのみ、Marc Bでは発生しないようです。

Marc Bの場合、セッションは期待通りに動作します。ここにphp.iniを投稿できますか?だから私はあなたと私を比較することができますか?

+0

あなたが正しいです:) – arnaud576875

+1

最良の教師は経験であるあなたはそうのように、$_SESSION内の配列を格納する必要があります。これはちょうどそれを試すことができるだけの十分な質問です... – NotMe

+1

なぜそれをテストしないのですか? –

答えて

5

スーパーグローバルのような$_SESSIONは通常の配列ではありません。

ファイル1:$_SESSION['foo'][] = 'Hi!';

ファイル2:$_SESSION['foo'][] = 'there';

+0

はい、それらは通常の配列とは異なります。より複雑な方法(配列の配列...) ありがとう! – Francesco

0

$_SESSIONに適切なキーを指定していません。

0

いいえ、それはうまくいくはずです。実際に、file1をリロードしただけでは、一連の "Hi"、 "Hi"、 "Hi"などの配列エントリを取得できます。

+0

私はfile1.phpをリロードすると毎回Array([0] => Hi)を取得します。私はなぜ – Francesco

+0

0がセッションが失われるまで、残りの1,2,3 print_r($ _セッション) –

+0

を参照してください。取得しているすべてが1つのエントリである場合、セッションは要求を超えて保存されていません。各ページリクエストの間にセッションクッキーが適切にserver-> you-> serverに移動していることを確認してください。毎回別のセッションIDを取得すると、それは新しい空白のセッションになります。これはなぜ「Hi」の1つだけであるのかを説明します –

0

あなたは私はあなたのコードをテストしている

$_SESSION[]='Hi' instead of $_SESSION["Greet"]='Hi'? 

をしなかった理由は、特定の理由があります。以下の通知に

Array 
(
    [0] => hi 
) 

::私はfile1.php始めたとき、私は次のものが不明スキップ数値キー0行0 上不明で、その後私は私が持っている以下のfile2.phpするようになりました:

Array 
(
    [0] => there! 
) 

と同じ通知です。あなたが間違っているあなたの質問に答えるだけです:)。 あなたはセッション変数に(「挨拶」とそれぞれ「会う」)のインデックスを追加した場合、これは1ページの出力のようになります。

Array 
(
    [greet]=> hi  
) 

とあなたがfile2.phpに行くとき、あなたが持っているでしょう:

Array 
(
    [greet] => hi 
    [meet] => there! 
) 
+0

セッションの奇妙な振る舞いがあるので、私が作った例です – Francesco

-1

FILE1:

<?php 
session_start(); 

$_SESSION['0'] = 'Hi'; 

echo '<pre>'; 
print_r($_SESSION); 
echo '</pre>'; 

That prints 
Array 
(
    [0] => Hi 
) 

とfile2。file1に似ていますがセッションインデックスが異なるPHPです。

<?php 
session_start(); 

$_SESSION['1'] = 'There!'; 

echo '<pre>'; 
print_r($_SESSION); 
echo '</pre>'; 

Now this prints 
Array 
(
    [0] => Hi 
    [1] => There! 
) 
+0

これはうまくいきません。(0,1、 '0'、 '1'などの数値インデックスを使用するとセッションができないようですもし私が '0'、 '1'のようなインデックスを使っていれば、それはうまくいくように思えますか? – Francesco

関連する問題