PHP

【PHP】file_get_contentsでリンク元などのヘッダ情報を変更する

投稿日:

スポンサードリンク

file_get_contentsで他サイトの情報を読み取る際などでリンク元を明記したい場合は以下のようになります。

//ファイルA:読み取る側(別サーバー)

$uri = "http://mementoo.info/test/mailsendtest.php";
$referer = "http://example.com";
$options = array(
    'http' => array(
        'method' => "GET",
        'header' => "Referer: ".$referer
    )
);
$context = stream_context_create($options);
$html = @file_get_contents($uri);

これは当サイトとは別のサーバーから当サイトの「http://mementoo.info/test/mailsendtest.php」(現在は削除しています。)にアクセスした様子です。

stream-context-createによりヘッダ情報などを連想配列状にしたオプションを設定したストリームコンテキストを作成し、file_get_contentsの際に引数で渡すことでリファラを設定しています。

他にもAPIを使用する際、ユーザーエージェントも一緒にオプションで指定してあげるなどの使い道があるそうです(下記リンク参照)。

「mailsendtest.php」はリファラ元を取得したらメールで飛ばすだけの確認用のスクリプトです。ブラウザでの表示でもcronでの実行でも同様の結果が得られるか確認するためこのようなメール形式にしました。以下参照。

//ファイルB:読み取られる側(ttp://mementoo.info/test/mailsendtest.php)

mb_language("japanese");
mb_internal_encoding("utf-8");
 
$referer = $_SERVER["HTTP_REFERER"];

$to = "info@mementoo.info";
$subject = "referertest";
$body = "access from:".$referer;
$from = "me";
 
//メール送信
mb_send_mail($to,$subject,$body,"From:".$from);

ファイルAをブラウザで開いた場合でもcronで実行指定した場合でも送られてきたメールを確認すると指定したところのものになりました。

mailsendtest

スポンサードリンク

-PHP

Copyright© めめんと , 2019 All Rights Reserved Powered by AFFINGER5.