通过PHP(curl)或jQuery发送POST信息 - IP问题 -

时间:2011-01-21 22:06:10

标签: php jquery

我使用php curl发送帖子信息。没关系。没问题。但它会发送服务器的IP。这对我来说是一个问题。

jquery用用户的IP发送帖子信息,但是jQuery有跨域问题。它不会将帖子信息发送到另一个域。它只适用于同一个域。

我想发送信息(到另一个域)+用户IP(不是服务器IP)。我想学习你的建议......那么,还有其他方法可以完成这项工作吗?

谢谢,问候。

4 个答案:

答案 0 :(得分:1)

执行此操作的唯一方法是在网页上指定指向指定资源的表单,为其指定POST方法并提交。

如果您不想重新加载整个页面,请使用iframe。

<iframe id="myiframe"></iframe>

<form action="http://some-other-site.com/page.php" method="post" target="myiframe">
....

但是,由于跨域/单一来源政策,您将无法访问网站输出的结果。

答案 1 :(得分:0)

如果“some-other-site”也是你的,你只需要客户端IP - 你可以传递另一个POST参数,其值来自全局数组$_SERVER["REMOTE_ADDR"]

但是如果你需要从客户端IP发出请求 - 你应该使用iframe,正如Pekka所说。

答案 2 :(得分:0)

您还可以设置一个可以代理您的电话的PHP脚本。

在同一个域中,放一个能够捕获post args的php脚本,然后通过curl调用重新发送它。然后打印jquery ajax调用将捕获的结果。

答案 3 :(得分:0)

是肯定的。使用curl脚本发布图像,然后呢?我如何得到结果?

<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" name="sub" value="upload"/>
</form>

    <?php

    ini_set('display_errors',1);
    error_reporting(E_ALL);

    if($_POST['sub'])
    {

    if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/pjpeg")))
      {
      if ($_FILES["file"]["error"] > 0)
        {
        echo "Return Code: " . $_FILES["file"]["error"] . "<br />";
        }
      else
        {
    //set POST variables
    $url = 'http://img.savvylist.com/';

    $contents = $_FILES["file"]["tmp_name"];
    //get image file as contents.


    $fields = array(
                'filetype'=>'jpg',
                'fileid'=>'test_suite:adam:head.jpg',
                'content'=>$contents           
            );

    //url-ify the data for the POST
    $fields_string = '';
    foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; }
    rtrim($fields_string,'&');

    //open connection
    $ch = curl_init();

    //set the url, number of POST vars, POST data
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_POST,count($fields));
    curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string);

    //execute post
    $result = curl_exec($ch);

    //close connection
    curl_close($ch);

        }
      }
    }
    ?>

现在是什么?