2012-03-24 11 views
0

PHPセッション変数を使用して通貨を設定する簡単なスクリプトがありますが、以前のディレクトリにユーザーを戻すとセッションは設定されなくなります..PHP - フォルダ間でセッションを渡す

(このスクリプトは、ルートフォルダ/index.phpに位置している)

<?php 
if (isset($_POST[product_currency])) { 
    $postCurrecy = $_POST[product_currency]; 
    session_destroy(); 
    session_start(); 
    $_SESSION[currency] = $postCurrecy; 
    echo $_SESSION[currency].' = '.$_POST[product_currency]; 
    echo "<meta http-equiv='refresh' content='1;URL=$_SERVER[HTTP_REFERER]'>"; 
    die(); 
} 
?> 

それはこれを含ま/製品/ ISに戻るフォルダ:

<?php if (empty($_SESSION[currency])) { echo 'uh oh'; } else { echo $_SESSION[currency]; } ?>Currencies:      
<form id="select-form" action="/" method="post"> 
<select class="inputbox" name="product_currency" size="1" > 
<option value="EUR" >€ Euro</option> 
<option value="USD" selected="selected">$ US Dollar</option> 
<option value="GBP" >£ GBP</option> 
</select> 
    <input class="button" type="submit" name="submit" value="Change" /> 
</form> 

$_SESSION[currency]のリターンは、それが空なので「ああ、ええと」:(この回答のため

+0

セッションにアクセスする_all_スクリプトの先頭に 'session_start()'を呼び出す必要があります。また '$ _SESSION ['currency']'のように配列キーを引用してください –

+0

ああ、それはうまくいきました:D ty それは常に引用符なしで正常に動作するので、なぜ私はそれらを追加すべきか分かりません – King

+1

それらを追加します。なぜなら、あなたがそうしないたびにたくさんの警告がスローされているからです。error_reportingがオフになっていると、それらは表示されません。配列のキーはintや文字列ですが、引用しないと、PHPはそれらを未定義の定数として認識し、文字列に変換します。それに頼る練習が貧弱で、実際に定義された定数で衝突を引き起こす可能性があります。 –

答えて

0

クレジットは、あなたがの上部にsession_start()を呼び出す必要が@Michael Berkowski

に行くべきセッションにアクセスするすべてのスクリプト。

関連する問題