我有一个PHP页面需要在页面执行期间将数据发送到另一个PHP页面并接收数据。
可以这样做吗?如果是这样,怎么样?
更新
抱歉 - 意思是说第二个脚本位于完全不同的服务器和域上。
就像Stripe如何使用他们的PHP选项一样:https://stripe.com/docs/api?lang=php
答案 0 :(得分:2)
修改强>
查看Stripe源代码,您会看到他们确实使用了cURL( ApiRequestor.php ):
private function _curlRequest($meth, $absUrl, $headers, $params, $myApiKey)
{
$curl = curl_init();
$meth = strtolower($meth);
$opts = array();
if ($meth == 'get') {
$opts[CURLOPT_HTTPGET] = 1;
if (count($params) > 0) {
$encoded = self::encode($params);
$absUrl = "$absUrl?$encoded";
}
} else if ($meth == 'post') {
$opts[CURLOPT_POST] = 1;
$opts[CURLOPT_POSTFIELDS] = self::encode($params);
} else if ($meth == 'delete') {
$opts[CURLOPT_CUSTOMREQUEST] = 'DELETE';
if (count($params) > 0) {
$encoded = self::encode($params);
$absUrl = "$absUrl?$encoded";
}
} else {
throw new Stripe_ApiError("Unrecognized method $meth");
}
$absUrl = self::utf8($absUrl);
$opts[CURLOPT_URL] = $absUrl;
$opts[CURLOPT_RETURNTRANSFER] = true;
$opts[CURLOPT_CONNECTTIMEOUT] = 30;
$opts[CURLOPT_TIMEOUT] = 80;
$opts[CURLOPT_RETURNTRANSFER] = true;
$opts[CURLOPT_HTTPHEADER] = $headers;
$opts[CURLOPT_USERPWD] = $myApiKey . ':';
$opts[CURLOPT_CAINFO] = dirname(__FILE__) . '/../data/ca-certificates.crt';
if (!Stripe::$verifySslCerts)
$opts[CURLOPT_SSL_VERIFYPEER] = false;
curl_setopt_array($curl, $opts);
$rbody = curl_exec($curl);
if ($rbody === false) {
$errno = curl_errno($curl);
$message = curl_error($curl);
curl_close($curl);
$this->handleCurlError($errno, $message);
}
$rcode = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
return array($rbody, $rcode);
}
cURL - 来自PHP manual:
PHP支持libcurl,这是一个由Daniel Stenberg创建的库 允许您连接和通信许多不同类型的 具有许多不同类型协议的服务器。 libcurl目前 支持http,https,ftp,gopher,telnet,dict,file和ldap 协议。 libcurl还支持HTTPS证书,HTTP POST,HTTP PUT,FTP上传(这也可以通过PHP的ftp扩展来完成), 基于HTTP表单的上传,代理,cookie和用户+密码 认证
<?php
/* http://localhost/upload.php:
print_r($_POST);
print_r($_FILES);
*/
$ch = curl_init();
$data = array('name' => 'Foo', 'file' => '@/home/user/test.png');
curl_setopt($ch, CURLOPT_URL, 'http://localhost/upload.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
?>
答案 1 :(得分:1)
使用script1.php中的include('script2.php')
然后你可以在script1.php中调用script2.php中的函数(假设它们具有全局范围)。
答案 2 :(得分:1)
另一种可能性,如果你想通过URL调用像最终用户这样的PHP脚本,cURL是一个很好的工具来了解。