2011-08-09 23 views
3

私は今、このことを少しでも試してみようとしています。基本的に私は米国とカナダのユーザーのためのフォームを持っています。SESSION変数の値を変更してください

<?php 
if (isset($_SESSION['can'])) { 
    session_start(); 
    session_destroy(); 
    session_unset(); 
    session_start(); 
    $_SESSION['can'] = 2; 
} 
else { 
    session_start(); 
    $_SESSION['can'] = 1; 
} 
header('Location: '. $_SERVER['HTTP_REFERER'] . ''); 
?> 

を基本的に、彼らはリンクをクリックした場合、それは[$ _SESSIONを設定し、「できる」:ユーザーがするように指示カナダのユーザーのために、フォームの下部にあるリンクは、含まれている缶sesssion.phpは、あります] = 1もう一つのオプションがあります。リンクをクリックすると、このページに戻り、セッションが破棄され、新しい値が設定されます(これはやり方です)。問題は、私は$ _SESSION ['can']を印刷しましたが、そのページに行くとその古い値を保持しています。これを行う良い方法はありますか、または私のコードで何か間違っていますか?助けてくれてありがとう。

+1

(のみ session_start()を使用して)参照ページ。オプションで、ブラウザーは必要なものを送信できます。 –

+0

もっと便利なオプションがありますか、単にこのPHPをページに含めるのがもっと実用的でしょうか? –

+0

セッション変数を変更する場所にコードを挿入します。新しいページに誰かを送ることなく、何度でも何かを変更することができます。 –

答えて

7

これは、あなたが書いたものである:

if (isset($_SESSION['can'])) { 
    session_start(); 

session_startは、ユーザーのPHPSESSIDクッキーに関連したセッションファイルを読み込み、$_SESSIONを移入する機能ですので、あなたはそれがいずれかを持って前に、アレイから読み取るしようとしています値。

session_startの前にに電話する必要があります。$_SESSION['can']に値があるかどうかを確認してください。

値を変更するだけで新しいセッションを破棄して作成する必要もありません。

<?php 
session_start(); 
if (isset($_SESSION['can'])) { 
    $_SESSION['can'] = 2; 
} else { 
    $_SESSION['can'] = 1; 
} 
header('Location: '. $_SERVER['HTTP_REFERER'] . ''); 
?> 
+0

Gotcha。そうですね、私はセッションをもう一度最後の努力として破壊していましたが、最初はセッションを初期化していないので、明らかにそれはうまくいかないでしょう。 –

+0

私は他の応答が私の最後に最初に来たことを示しています。私はあなたの迅速な対応に感謝します。 –

+0

ここに私の最後に表示されているもの:回答25分前 - ニール-----回答27分前 - Dan –

1

これを試してください:あなたは `HTTP_REFERER`は、あなたが設定されているに頼ることができ、ヘッダではない、または実際に設定されていることに注意する必要があり

<?php 
session_start(); 
if (isset($_SESSION['can'])) { 
    $_SESSION['can'] = 2; 
} 
else { 
    $_SESSION['can'] = 1; 
} 
header('Location: '. $_SERVER['HTTP_REFERER'] . ''); 
?> 
+0

Perfecto!なぜ、複数のsession_start()がそれを壊していたのでしょうか? –

+1

彼らはそうではありませんでした、あなたはちょうど**間違った時にそれを呼んでいました^ _^ – Neal

+0

、ありがとう! –

関連する問題