作为记录,我确实看到了这个条目 - 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 中,它只显示我的失败消息(“嗯,回到绘图板”)。我错过了一些东西。:(
编辑:
根据 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 供应商 =