レ点腫瘍学ノート

pukiwikiカスタマイズ箇所/自作プラグイン/ogp.inc.php/opengraph.php改変 の履歴ソース(No.4)

#author("2021-10-20T08:48:32+09:00;2021-10-19T07:31:01+09:00","default:tgoto","tgoto")
#ref(https://oncologynote.com/img/bed8b650df.png,nolink)

[[opengraph.php>https://github.com/scottmac/opengraph/]]はOGP情報を取得してブログやWEBサイトの情報量を増やして豊かなサイトを作るのに非常に有用です。しかし、クッキーに未対応であるが故にopengraph.phpを使っても取得できないページがあり、困っていました。このページではその解決策を記載します。

#ogp(https://github.com/scottmac/opengraph/)

* opengraph.phpがクッキーを取得できるようにする [#rfeb90cf]

 curl_setopt($curl, CURLOPT_FAILONERROR, true);
 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
 curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
 curl_setopt($curl, CURLOPT_TIMEOUT, 15);
 curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
 curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
 curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);

デフォルトではcURLの設定に関するopengraph.phpの55〜61行目は上記のようになっていました。しかしこれではクッキーを扱えないため、サイトによっては取得ができないことがありました。具体的にはthe Lancetという英語医学雑誌のサイトの情報が取得できなくて困っていました(クッキーが使えない状態でアクセスしようとすると「DEFINE_ME」という情報のみが返ってきます)。

#ogp(https://www.thelancet.com/journals/lanonc/article/PIIS1470-2045(21)00426-5/fulltext)

そこで、このcURL設定項目の下に下記の2行を追記します。これは、そのセッションだけで有効なクッキーを利用可能にするための設定です。PHPエラーが出ないよう最後のセミコロンも忘れずに。

 curl_setopt($curl, CURLOPT_COOKIESESSION, true);
 curl_setopt($curl, CURLOPT_COOKIEFILE, './tmp/cookie.txt');

これで、クッキーを必要とするサイトでもopengraph.phpを使ってOGP情報を取得することができるようになりました。

参考までに改造後のopengraph.phpをここにアップロードしておきます。

>&ref(opengraph.php);
&ref(ogp.inc.php); / ver 1.51