dポイントプレゼントキャンペーン実施中!

PHP5.3.8にてcURLを使用しているのですが、あるサイトのページを取得し、それをファイルに書き込もうとして

このページ(http://www.phppro.jp/phptips/archives/vol16/3)を試してみようと思い、自分のパスワードなど入れて実行してみました。

しかし、2度目のCURL OUTPUT:が、
「Request Entity Too Large
The requested resource
/members/history.php
does not allow request data with POST requests, or the amount of
data provided in the request exceeds the capacity limit.」
となってしまいます。
これはphpproだけでなく、他のサイトでも同じになります。


よく分からなかったのですが、Webにて検索して
post_max_sizeをphp.iniにて8Mとか変更し大きくしてみたのですがダメでした。
ファイルサイズなんて数Mもないと思うのですが。
http.confでも
<Files *.php>
LimitRequestBody 524288000
</Files>
とかしてみてもダメでした。

何が原因なのか分かりません。
どのようにすればいいのでしょうか?

A 回答 (2件)

「CURLOPT_COOKIEFILE」で検索したところ、「CURLOPT_COOKIEJAR」で受けて「CURLOPT_COOKIEFILE」を送信ということがわかります。


http://sb.xrea.com/archive/index.php/t-11609.html

マニュアルのサンプルコードを見ると、「CURLOPT_COOKIEFILE」と「CURLOPT_COOKIEJAR」をそろえてあることも、これで納得がいくでしょう。
http://jp.php.net/manual/ja/function.curl-setopt …

「CURLOPT_COOKIEJAR」に指定した「cookie」の中身を確認すると、仕組がよくわかります。
PHP をモジュールで動かしている場合は、サーバルートに生成されていると思いますので探してみてください。

とにかく食わされたクッキーを間違いなく送り返してやれば、サーバはログインしていることを理解するはずです。
クッキーはホームディレクトリのしかるべき場所をフルパスで指定して管理してください。確認もしやすいです。
    • good
    • 0
この回答へのお礼

遅くなりごめんなさい。
ご回答ありがとうございました。
今から暫く試行錯誤してみます。
また分からなかった時は質問させてください。

本当にご回答ありがとうございました。

お礼日時:2011/11/14 17:42

初回のリクエストでは、ログインに必要な情報を POST する必要があるでしょうが、それ以降のリクエストは GET メソッドで行うのが普通ではないでしょうか。



「CURLOPT_POST」で検索すると、POST メソッドを GET メソッドに戻す方法など出てきますので、マニュアルと合わせてご覧になることをお勧めします。
http://www.php.net/manual/ja/function.curl-setop …

ログイン後のリクエストはクッキーを添えて GET メソッドで良いと思います。
    • good
    • 0
この回答へのお礼

samchayさん、貴重なご回答ありがとうございました。
その発想はなく、必死にもがいていました。

>それ以降のリクエストは GET メソッドで行う
このサイト(http://d.hatena.ne.jp/susan-style/20100908/12839 …から、HTTPGETに設定すればいいと分かりました。
しかし、このPHPProの2つめの例文の場合、どこにcurl_setopt($ch, CURLOPT_, TRUE)を設定すればいいのでしょうか?

2つめの$output = curl_exec($ch);の時に一気に実行されると思いますので、この前には置けないのではないかと思います。
では、その後で、また最初からcurl_init($url)を実行していけばいいのかと思いますが、今度はどのURLを指定すればいいのか分かりません。

FirefoxにてLive HTTP Headersを使いヘッダー部は確認しているのですが、
そのPOST、GETのリクエスト内のURLを順次(といってもリダイレクト等が多いのは結構な数になったりもしますが)
curl_init()していくことになるのでしょうか?


>ログイン後のリクエストはクッキーを添えて GET メソッドで良い
という文章から、一番最後の
curl_setopt($ch, CURLOPT_POST, TRUE);
をHTTPGETにするだけでいいのかな、とも思いましたが。上手くいきませんでした。

お礼日時:2011/11/09 14:58

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!