如何在PHP脚本中访问另一个PHP脚本?

时间:2011-12-14 23:47:43

标签: php

我有一个PHP页面需要在页面执行期间将数据发送到另一个PHP页面并接收数据。

可以这样做吗?如果是这样,怎么样?

更新

抱歉 - 意思是说第二个脚本位于完全不同的服务器和域上。

就像Stripe如何使用他们的PHP选项一样:https://stripe.com/docs/api?lang=php

3 个答案:

答案 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是一个很好的工具来了解。

http://php.net/manual/en/book.curl.php