2012-03-24 5 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(); 
} 
?> 

папка возвращается к тому,/продукция /, которая содержит этот:

<?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

Вам нужно вызвать 'session_start()' в верхней части скриптов _all_, которые обращаются к сеансу. Кроме того, процитируйте свои ключи массива, как в '$ _SESSION ['currency']' –

+0

Ahh, что сработало: D ty, всегда работает отлично без кавычек, поэтому я не понимаю, почему я должен добавить их – King

+1

Вы должны добавьте их, потому что куча предупреждений бросается каждый раз, когда вы этого не делаете, но если вы отключили error_reporting, вы их не увидите. Это плохая практика - ключи массива - это ints или строки, но если вы не цитируете их, PHP увидит их как неопределенные константы и любезно преобразует их в строки для вас. Плохая практика полагаться на него и может фактически вызвать столкновения с реальными определенными константами. –

ответ

0

Кредит на этот ответ должен пойти @Michael Берковского

Вам нужно позвонить session_start() в верхней части всех скриптов, доступ к сеансу.

Смежные вопросы