2009-12-27 157 views
1

第一个定时器的网站,而不是一个过度经验的PHP程序员在这里:)传递会话变量通过iframe,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并将其分配给会话var productcheck1等等。不幸的是,我必须一次拿一个var,否则我只能通过所有4个产品,而不用担心会话。

也许我做这个太复杂了,任何帮助将不胜感激谢谢!

+0

很奇怪,但我不明白这个问题。 – mauris 2009-12-27 13:02:20

回答

4

您必须在两个脚本中使用session_start(),一个设置值(并且可能会打印<iframe> -element?)和生成iframe内容的脚本。

例如“外”脚本

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

感谢您的帮助VolkerK,你是一位天才! – Doug 2009-12-27 15:12:57

+0

谢谢!谢谢! – Doug 2009-12-27 15:14:04

1

不知道如何处理您的会话变量的,但你绝对可以通过在你的iframe URL传递所有四个变量的脚本。您只需要将键值对与“&”分开。所以像这样:

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

这可能是一个比使用会话变量更好的方法,如果您只是试图将数据导入到其他文件中。