【问题标题】:php curl sending data from one iframe to anotherphp curl 将数据从一个 iframe 发送到另一个
【发布时间】:2012-02-20 10:31:06
【问题描述】:

我需要使用 cURL 将数据从一个 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>

和两个 iframe 代码: 回发 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 (replay.php) 得到响应到新页面,而不是打印变量 2 到第二个 iframe。我怎样才能改变它?我要补充一点,我不能使用 JavaScript/AJAX/jQuery 等。仅服务器端脚本

【问题讨论】:

  • 如果我明白你在问什么,问题可能是你希望通过第一个 iframe 的 curl 调用影响第二个 iframe 的内容。但是在通话中,您使用的是该脚本的一个完全独立的实例,而不是显示的那个。
  • 是的,这正是我想做的。我想在 iframe1 中触发按钮并在 iframe2 中查看结果(回声)。问题可能是,每个 iframe 都在不同的域上。
  • 您将在 curl 调用中从第二个 url 获得输出。所以您不需要为它使用不同的 iframe。只需在第一个(并且只有 iframe)中显示其初始状态和调用后显示 curl 响应
  • @mishu 你看我的帖子了吗?我必须以某种方式编写数据以通过服务器端检测 iframe,因为 iframe 位于 不同的域中,因此 JS 不是一个好的选择。
  • 你在哪里看到任何 JS 参考?我只是在谈论 curl 调用及其响应(使用 CURLOPT_RETURNTRANSFER)。如果您认为我的答案不是您所需要的,您可以忽略它。是的,我阅读了您的帖子以提供可能有所帮助的意见,并且我了解您正在使用与之前的问题不同的两台服务器,我建议您使用 jsonp 作为使用两台服务器的 ajax 的替代方案,但您认为这不是什么你需要

标签: php iframe curl


【解决方案1】:

与其做这个服务器端,不如使用 javaScript 将表单提交到 iFrame,这可以通过将 iframe src 更改为 postback.php?variable=send 并使用 $_GET['' 轻松完成] 服务器端的参数。

我不认为你可以使用 curl 实现你正在寻找的东西

【讨论】:

  • 这可能很好,但正如我在 iframe 位于 不同域 之前所写的那样,由于 XSS 我必须使用服务器端脚本。
  • @Krystian:我认为 Hank 不是在谈论 ajax(受跨域策略限制)。他说你可以直接提交表单(普通的表单提交没有这种限制)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-21
  • 1970-01-01
  • 1970-01-01
  • 2016-04-13
  • 2012-04-14
相关资源
最近更新 更多