0

cURL を使用してフォーラムにログインし、Cookie をファイルに保存してから、Cookie を解析して Cookie を取得しようとしていますphpbb2mysql_sid。これまでの私のコードは次のとおりです。

<?php

$curl = curl_init();

$cookieFile = 'C:\xampp\htdocs\cookies\\' . uniqid(true);

// Login
curl_setopt($curl, CURLOPT_URL, 'http://localhost/phpbb2/login.php');
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookieFile);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, true);
curl_setopt($curl, CURLOPT_POST, true);
$postVars = array('username' => 'username', 'password' => 'testing', 'autologin' => 'on', 'login' => 'Log in');
curl_setopt($curl, CURLOPT_POSTFIELDS, $postVars);
$resp = curl_exec($curl);

// Parse sid from cookie file
preg_match('/phpbb2mysql_sid\t(.*)/', file_get_contents($cookieFile), $match);
$sId = $match[1];

echo $sId;

ただし、スクリプトを実行すると、次のエラーが発生します。

Warning: file_get_contents(C:\xampp\htdocs\cookies\150367764c4ef3) [function.file-get-contents]: failed to open stream: No such file or directory in C:\xampp\htdocs\leech\post.php on line 18

Notice: Undefined offset: 1 in C:\xampp\htdocs\post.php on line 19

ファイルシステムを確認すると、ファイルはそこにあります。そして、ファイルの内容を取得するコードは cURL リクエストのにあるので、ファイルが存在するはずですよね?

4

1 に答える 1

1

問題が見つかりました。Cookie ファイルは、curl_close()が呼び出されたときにのみ保存されます。呼び出しの前に cURL ハンドルを閉じるだけfile_get_contents()で、魅力的に機能します。

于 2012-08-23T18:38:20.883 に答える