2012-02-20 90 views
0

我需要使用cURL从一个iframe发送数据到另一个。我的代码是: php curl从一个iframe发送数据到另一个iframe

<head> 
     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
     <title>New Web Project</title> 
    </head> 
    <body> 
     <form action="postback.php" method="POST"> 
      <input type="hidden" name="variable" value="send"/> 
      <input type="submit" /> 
     </form> 
     <iframe name="test" src="postback.php" width="200" height="200"></iframe>postback 
     <iframe name="test2" src="replay.php" width="200" height="200"></iframe>replay 
    </body> 
</html> 

和两个I帧代码: 回传IFRAME:

<?php 
if (isset($_POST["variable"])){ 
    $var1 = $_POST["variable"]; 

     $url = 'http://localhost/xss/replay.php'; 
     $ch = curl_init($url); 
     $parameters = 'variable2='.$var1; 
     //curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_POST, 1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS, $parameters); 
     curl_exec($ch); 
     curl_close($ch); 

} 
else echo 'w8'; 
?> 

重播的iframe:

<?php 
if (isset($_POST["variable2"])){ 
    $var1 = $_POST["variable2"]; 

    echo $var1; 
} 
else echo 'w8'; 
?> 

在这种情况下,我得到谢胜利IFRAME(重播响应.php)到新页面,而不是打印变量2来隔离iframe。我该如何改变它?我会补充说,我不能使用JavaScript/AJAX/jQuery等。只有服务器端脚本

+1

如果我明白你问的问题可能是你期望从第一个iframe中的卷曲通话内容影响的事实第二个。但在通话中,您正在使用该脚本的完全独立的实例,而不是它所显示的实例。 – mishu 2012-02-20 10:45:48

+0

是的,它正是我想要做的。我想在iframe1中触发按钮并在iframe2中看到结果(echo)。问题可能是,每个iframe都在不同的域上。 – Krystian 2012-02-20 10:52:56

+0

你会在curl调用中得到第二个url的输出。所以你不需要一个不同的iframe,只需要在第一个(也是唯一的iframe)中显示其初始状态并在调用之后显示curl响应 – mishu 2012-02-20 11:04:09

回答

0

而不是做这个服务器端,你可能会更好使用javaScript将表单提交给iFrame,它可以通过将iframe src更改为postback.php?variable = send和using $ _GET ['']参数在服务器端。

我不认为你可以实现你在找什么使用curl

+0

它可能是好的,但正如我之前写的iframes在*不同的域*因此,因为XSS我必须使用服务器端脚本。 – Krystian 2012-02-20 11:00:20

+1

@Krystian:我不认为Hank正在谈论ajax(这受到跨域策略的限制)。他说你可以提交表格(一个简单的表单提交没有这种限制) – mishu 2012-02-20 11:39:41

相关问题