別のページのコンテンツを取得したい。背景は、AJAXリクエストをしたかったのですが、Same Origin Policy
これができないためです。ここで、AJAX 要求を行う独自の PHP スクリプトを作成したいと考えました。URL は次のようになります。
fopen
、curl
とで試してみましたfile_get_contents
。作品からは何もありません。問題は、URLを次のような文字列として入力した場合です
$results = file_get_contents('http://domain.com/subfolder/another_subfolder/index.php?id=1234&tx_manager_pi9[parameter]=1&tx_manager_pi9[category]=test&tx_manager_pi9[action]=getInfos&tx_manager_pi9[controller]=Finder&cHash=123456789001233455332');
それは機能します。変数を入れると
$url = 'http://domain.com/subfolder/another_subfolder/index.php?id=1234&tx_manager_pi9[parameter]=1&tx_manager_pi9[category]=test&tx_manager_pi9[action]=getInfos&tx_manager_pi9[controller]=Finder&cHash=123456789001233455332';
$results = file_get_contents($url);
間違ったページに来ました。特定のパラメーターを使用すると、結果が得られます。パラメータが正しく指定されていない場合、デフォルトのページが表示されるようです。私はそれを理解することはできません。
についても同じcurl
:
$curlSession = curl_init();
$options = array
(
CURLOPT_URL=>$url,
CURLOPT_HEADER=>false,
CURLOPT_RETURNTRANSFER=>true,
CURLOPT_FOLLOWLOCATION=>true
);
curl_setopt_array($curlSession,$options);
$results = curl_exec($curlSession);
これはうまくいきません。URL を変数ではなく文字列として入力すると、いくつかの結果が得られます。アンパサンド&
または角括弧[]
が問題だと思いましたが、これは言えません。&
予約する必要があり[]
、正しい URL パラメータではありません。しかし、変数ではなく直接入力が機能するのはなぜですか?
str_replace
クエリをより柔軟にする場所でいくつかの置換を行うため、変数を使用しました。
ここで同様の質問を見ました(cURL関数が機能しない、curl_setoptがurlを変数として機能しない)が、実際の解決策は投稿されていません。