【发布时间】:2011-10-09 06:09:46
【问题描述】:
一段时间以来,我一直在努力使用 CURL (PHP) 登录 Wordpress。我想我已经尝试了一切,但似乎我错过了一些东西。我登录时无法让 CURL 保存我的 Cookie。 奇怪的是,即使我无法将 cookie 保存到文件中,除了升级 Worpdress 插件(这就是我目前正在做的事情)之外,一切仍然或多或少地工作。我可以登录到 wordpress,我什至可以设置自动 ugprade preg_matching 链接并在其上卷曲 - Wordpress 核心升级没有问题,但由于某些原因,当涉及到插件时 - 我就是做不到。昨晚我有很多猜测问题出在哪里,但什么也没做。现在,当我决定比较从 CURL 和 FireFox 获得的 cookie 时,结果发现 CURL 没有 cookie。
好的,所以我在这里设置选项(不要介意评论的东西,我一直在检查所有评论的东西并将它们放入......)。
$cookieFile = 'cookies.txt';
$channel = curl_init();
curl_setopt_array($channel, array (
CURLOPT_SSL_VERIFYPEER => FALSE,
CURLOPT_TIMEOUT => 60,
CURLOPT_FOLLOWLOCATION => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_COOKIEFILE => $cookieFile,
CURLOPT_COOKIEJAR => $cookieFile,
CURLOPT_AUTOREFERER => true,
CURLOPT_POSTFIELDS => $loginPostData,
CURLOPT_POST => 1,
#CURLOPT_FRESH_CONNECT => 1
#CURLOPT_FAILONERROR => 1
));
# curl_setopt ($channel, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
#
# Shorten curl_exec for our $channel
#
function copen($openUrl, $custom = FALSE) {
global $channel;global $siteUrl;
if($custom) {$siteUrl = "";}
curl_setopt ($channel, CURLOPT_URL, $siteUrl.$openUrl);
$result = curl_exec ($channel) or die(curl_error($channel));
echo "<h3> Opening: $openUrl </h3>";
return $result;
}
所以我进行了搜索,并尝试获取 cookie,但失败了:
preg_match('/^Set-Cookie: (.*?);/mi', $result, $m);
echo(parse_url($m[1]));
我还尝试使用 file_get_contents() 回显 $cookieFile - 为空。我现在检查了大约 15 次文件 - 这是一个 777 可写文件。我尝试使用 file_put_contents() 写入它并成功,因此文件位置和/或权限存在错误。我显然错过了一些东西,我只是看不到它。
最好的问候:)
【问题讨论】: