2013-09-25 5 views
0

Для записи я увидел эту запись - Passing sessions variables through an iframe, php, которая задает тот же вопрос, но ответ (даже когда я следил за ним до Т) все еще не работает для меня ,

У меня есть две страницы - одна из них - целевая страница, другая - страница, на которой вы попадаете на целевую страницу через iframe. Я запускаю сеанс на целевой странице и присваиваю значение $ _SESSION значение, и я хочу, чтобы это значение втянуто в iframe.

Вот мой код целевой страницы:

<?php 
session_start(); 
    $_SESSION['vendorname'] = $this->getVendorId(); // store session vendor name data 
    echo "Vendor = ". $_SESSION['vendorname']; // test to see if the vendor name was properly set 
session_write_close(); 
?> 

<html> 
    <body> 
    ....blah blah... 
    <iframe width="100%" src="http://www.somewhere.com/iframe.php"></iframe> 
    <body> 
</html> 

Вот код из страницы в IFRAME:

<?php 
session_start(); 
?> 

<html> 
    <head> 
    <link href="css/something.css" type="text/css" rel="stylesheet" /> 
    </head> 

<body> 
    <?php 
    if(isset($_SESSION['vendorname']) && is_array($_SESSION['vendorname'])) { 
     echo "vendor = ". $_SESSION['vendorname']; } 
    else { 
     echo "Meh, back to the drawing board"; }?> 

</body> 
</html> 

На целевой странице, то $_SESSION отображается правильно. Он извлекает имя поставщика через нашу базу данных и выводит его на экран. Однако в iframe отображается только сообщение об ошибке («Meh, back to the drawing board»). Я чего-то не хватает. :(

EDIT:

предложение Per Marc Б, я теперь проверка session_id() Так что для этого кода (на целевой странице.):

<?php 
session_start(); 
    echo session_id(); 
    echo "<br>"; 
    $_SESSION['vendorname'] = $this->getVendorId(); // store session vendor name data 
    echo "Vendor = ". $_SESSION['vendorname']; //test to see if the vendorname was properly set 
    echo "<br>"; 
    echo session_id(); 
session_write_close(); 
?> 

я получаю следующий вывод:

0lq5gb79p52plgd9mcknpife60 Производитель = SUPERVEND 0lq5gb79p52plgd9mcknpife60

На странице IFrame, для этого кода:

<?php 
session_start(); 
echo session_id(); 
?> 

<html> 
     <head> 
     <link href="css/something.css" type="text/css" rel="stylesheet" /> 
     </head> 

    <body> 
<?php 
echo session_id(); 
if(isset($_SESSION['vendorname'])) { 
    echo "vendor = ". $_SESSION['vendorname']; } 
else { 
    echo "vendor = ". $_SESSION['vendorname']; } 
?> 

Я получаю следующий результат:

0lq5gb79p52plgd9mcknpife60 0lq5gb79p52plgd9mcknpife60 поставщика =

+0

убедитесь, что 'session_id()' имеет ТОЛЬКО значение на обеих страницах. Если это не так, ваши cookie сеанса не будут установлены должным образом. –

+0

Хорошо, вот глупый вопрос/вопрос ... как мне это сделать? – Kale

+1

'session_start(); echo session_id(); 'в обоих сценариях. отображаемое значение ДОЛЖНО быть таким же и должно соответствовать тому, что находится в вашем файле cookie PHPSESSID (или как бы там ни было его имя) в вашем браузере. Если значение изменяется, то у вас есть несколько сеансов на месте, а тот, где вы сохранили эти значения, становится «потерянным». –

ответ

0

Запустите IFrame следующим :

header('P3P: CP="CAO PSA OUR"'); 
session_start(); 

вы должны иметь доступ к переменным сеанса обычным образом.

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