通过iframe传递$ _SESSION - PHP

时间:2013-09-25 18:49:15

标签: php session iframe session-variables

为了记录,我看到这个条目 - Passing sessions variables through an iframe, php正在问完全相同的问题,但答案(即使我跟着它去了T)仍然不适合我。

我有两个页面 - 一个是登录页面,另一个是通过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,回到绘图板”)。我错过了什么。 :(

修改

Per Marc B的建议,我现在正在检查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 vendor =

1 个答案:

答案 0 :(得分:0)

使用以下内容启动iframe:

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

然后您应该能够以正常方式访问会话变量。