说我有3个网站。每次我在站点(1)上执行操作时,我都需要从(2)和(3)访问file.php,其中包含已完成操作的站点参数(在本例中为(1)),因此,这个例子,我需要访问:
(2).com/file.php?site=1
(3).com/file.php?site=1
如果行动是从网站(2)和(3)完成的,则同样适用。
最好的方法是什么? (每次在网站(x)上发生行动时,我都不想手动从我的浏览器访问该文件)
我试着做一个简单的事情:
<form method="get" action="(2).com/file.php?site=1"> </form>
<form method="get" action="(3).com/file.php?site=1"> </form>
它不起作用。
我尝试了某种ajax / XMLHttpRequest,并尝试使用“文件”PHP函数。
所以,我的问题是,我该如何处理? “虚拟”打开浏览器并加载PHP文件的最佳方法是什么?
答案 0 :(得分:1)
通过代理使用curl
进行跨域查询。
以下是另一个SO问题(How to use CURL via a proxy?)
的示例<?php
$url = 'http://www.php.net';
$proxy = '10.10.10.101:8080';
//$proxyauth = 'user:password';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
//curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);
echo $curl_scraped_page;
答案 1 :(得分:0)
我很抱歉因为我没有充分使用搜索功能:(
我会尝试使用curl,但是我使用的代码Prefix在我的网站上不起作用,当我在本地尝试它时,它说没有安装curl
,所以我继续尝试接下来的事情在视线中。我最终使用此代码,来自另一个SO线程:How do I send a POST request with PHP?
$url = 'http://server.com/path';
$data = array('key1' => 'value1', 'key2' => 'value2');
// use key 'http' even if you send the request to https://...
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data),
),
);
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
var_dump($result)
答案 2 :(得分:0)
您可以正常使用其他域的PHP文件(以处理请求,回显结果等),但是您需要在其他域的PHP文件中添加以下标头。对于ajax或xmlhttprequests,这是必需的。
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: *");