[PHP-users 34022] Re: readfileによるhttpsアクセスで"Please enable cookies"が表示される。

shounari ml @ shiftra.jp
2008年 8月 25日 (月) 16:56:16 JST


こんにちは、肥田と申します。

もうすでに解決していらっしゃるかもしれませんが、返信します。


> 現在、Windows環境(IIS6.0 + PHP5.2.6)からreadfileでhttpsのコンテンツを取得しようとしています。
> しかし、実際に動作させてみると、「Please enable cookies」と表示されてしまいます。

これは httpsのコンテンツがそういう回答をするのでしょうか?

そういうことであればPHPの動作するIISサーバが httpsのコンテンツに対し、
Cookie情報を出力するような仕組みにする必要があります。

そのためには、IISサーバがブラウザの動作をエミュレートし、
httpsコンテンツに接続するように作らなくてはいけません。

> <?php
>   readfile("https://xxxx.xxxx.co.jp/search?q=xxxxxx") ;
> ?>

readfile関数は、ブラウザでCookieを無効にしてリクエストして取得できる
HTMLソースを取り込むだけです。


Cookieを出力して取得できるように作るには fsockopen関数を使う必要があります。
http://jp2.php.net/manual/ja/function.fsockopen.php

ただ、スクラッチでこの処理を書こうとすると大変なので、ライブラリを利用すると
良いと思います。

僕は使ったことがないので間違ったものを教えてしまうのかもしれませんが、
たぶん PEARの HTTP_Requestあたりが使えるのではないでしょうか?

http://pear.php.net/manual/ja/package.http.http-request.php

> このパッケージは、HTTP リクエストを実行するための簡単な方法を提供します。
> GET/POST/HEAD/TRACE/PUT/DELETE、Basic認証、プロキシ、プロキシ認証、SSL、
> ファイルアップロードなどをサポートします。

要件に合うライブラリだと良いのですが。


-- 
肥田昌也 しょうなり <ml @ shiftra.jp>



PHP-users メーリングリストの案内