我使用php curl发送帖子信息。没关系。没问题。但它会发送服务器的IP。这对我来说是一个问题。
jquery用用户的IP发送帖子信息,但是jQuery有跨域问题。它不会将帖子信息发送到另一个域。它只适用于同一个域。
我想发送信息(到另一个域)+用户IP(不是服务器IP)。我想学习你的建议......那么,还有其他方法可以完成这项工作吗?
谢谢,问候。
答案 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);
}
}
}
?>
现在是什么?