通过iframe传递会话变量,php

时间:2009-12-27 12:38:38

标签: php iframe get session-variables

网站的第一个计时器,而不是一个经验丰富的php程序员:)

我有一个问题,我在网站中使用iframe尝试在内部使用会话变量,首先我只是试图显示会话变量以确保它们可以从iframe中访问:

    echo "session of productcheck ".$_SESSION['productcheck']." 
"; echo "session of productcheck1 ".$_SESSION['productcheck1']."
"; echo "session of productcheck2 ".$_SESSION['productcheck2']."
"; echo "session of productcheck3 ".$_SESSION['productcheck3']."
";

这只是显示“产品检查会话”,每次都没有任何内容,我将会话变量设置为:

$_SESSION['productcheck'] = $productBox;

$ productBox是来自URL的GET:

echo " <iframe src=\"homeview.php?productBox=$product1\" name=\"FRAMENAME\" width=\"594\" height=\"450\" scrolling=\"No\" id=\"FRAMENAME\" allowautotransparency=\"true\" > </iframe >"; 

奇怪的是,如果我只是从URL中检索到$ productBox变量并使用它然后代码工作,它只有当我将它存储在一个会混淆的会话变量中时。我想检索第二个$ productBox并将其分配给session var productcheck1,依此类推。不幸的是,我必须一次取一个var,否则我可以通过所有4个产品而不用担心会话。

也许我让这太复杂了,任何帮助都会非常感谢谢谢!!

2 个答案:

答案 0 :(得分:4)

你必须在两个脚本中使用session_start(),设置值(并且可能打印&lt; iframe&gt; -element?)和生成iframe内容的脚本。

e.g。 “外部”脚本

<?php // test.php
session_start();
$_SESSION['productcheck'] = array();
$_SESSION['productcheck'][] = 'A';
$_SESSION['productcheck'][] = 'B';
$_SESSION['productcheck'][] = 'C';
session_write_close(); // optional
?>
<html>
  <head><title>session test</title></head>
  <body>
    <div>session test</div>
    <iframe src="test2.php" />
  </body>
</html>

以及iframe内容的脚本

<?php // test2.php
session_start();
?>
<html>
  <head><title>iframe session test</title></head>
  <body>
    <div>
      <?php
      if ( isset($_SESSION['productcheck']) && is_array($_SESSION['productcheck']) ) {
        foreach( $_SESSION['productcheck'] as $pc ) {
          echo $pc, "<br />\n";
        }
      }
      ?>
    </div>
  </body>
</html>

答案 1 :(得分:1)

不确定您的会话变量是什么,但您绝对可以通过iframe中的url传递所有四个变量。您只需要使用&符号分隔键值对。所以像这样:

file.php?key1 = val1&amp; key2 = val2&amp; key3 = val3等等。

如果你只是想把数据放到另一个文件中,这可能比使用会话变量更好。