2011-12-14 6 views
-2

私は、ページの実行中に別のPHPページにデータを送信し、データを受け取る必要があるPHPページを持っています。PHPスクリプトで別のPHPスクリプトにどのようにアクセスしますか?

これはできますか?もしそうなら、どうですか?

更新:

申し訳ありません - 2番目のスクリプトは完全に別のサーバーおよびドメイン上にあると言うことを意味しました。どのようにストライプが自分のPHPオプションでそれをやっているよう

https://stripe.com/docs/api?lang=php

+0

http://www.php.net/include – vascowhite

+0

申し訳ありません - 2番目のスクリプトは完全に別のサーバーおよびドメイン上にあると言うことを意味しました。 – chromedude

+0

@vascowhite nothing ...私は考えることができるすべてのオプション(include、cURL)を考えましたが、このような状況には対応していないか、パッケージをインストールする必要はありませんでした。 – chromedude

答えて

1

使用include('script2.php') script1.php

から次にあなたがSCRIPT1から(彼らはグローバルスコープを持っていると仮定)script2.php内の機能を呼び出すことができます。 php。

+0

申し訳ありません - 第2のスクリプトが完全に異なるサーバーとドメインにあるとします。 – chromedude

2

EDIT

ストライプのソースコードを見ると、あなたは彼らが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は、Daniel Stenbergが作成したライブラリlibcurlをサポートしています。 を使用すると、数多くの異なるタイプのプロトコルを持つさまざまな種類のサーバに接続して通信することができます。 libcurl現在 は、http、https、ftp、gopher、telnet、dict、file、およびldapの プロトコルをサポートしています。 libcurlはHTTPS証明書、HTTP POST、HTTP PUT、FTPアップロード(これはPHPのftp拡張子でも行うことができます)、 HTTPフォームベースのアップロード、プロキシー、クッキー、ユーザー+パスワード 認証をサポートしています。

<?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

あなたはURLのを経由して、エンドユーザのようなPHPスクリプトを呼び出したい場合は他の可能性は、カールが知っているのに良いツールです。

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

+0

ストライプはcURL(https://stripe.com/docs/api?lang=php)なしでそれを行うことができるように思われます。 – chromedude

+0

ソースコードがある場合は、自分で見てみませんか? – Scuzzy

+0

私はそれを理解しようとしました...彼らはそれをやっている特定のクラスでどのように判断するのに十分なオブジェクト指向PHPを知っていません。私はおそらくそれをもっと調べなければならないだろう。 – chromedude

関連する問題