Okay, So I found the solution. After matching the link to crawl with preg_match() from a HTML content, you need to escape the link first (for a reason unknown to me, yet). We do this with: html_entity_decode($match)
CURL不保存Cookies(PHP)
I've been struggling with Logging in Wordpress for a while now with CURL (PHP). I think I have tried everything, but it seems that I've missed something. I can't get CURL to save my Cookies when I login. The weird thing, is that even though I can't save cookies to file, everything still works more or less, except Upgrading Worpdress Plugins (that is what I am working on currently). I can login to wordpress, and I can even set an automatic ugprade preg_matching the link and curling on it - Wordpress core upgrades with no problems, but for some reason when it comes to plugins - I just can't do it. I had a LOT guesses last night where the problem lies, but nothing did do. Now when I decided to compare the cookies I get from CURL and in FireFox - it turns out that there are no cookies from CURL.
Okay, So here I set the Options (don't mind the commented stuff, I've been checking everything commenting things out and putting them in...).
$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;
}
So I did a search, and tried to get the cookies, and failed with this:
preg_match('/^Set-Cookie: (.*?);/mi', $result, $m);
echo(parse_url($m[1]));
I also tried echoing the $cookieFile with file_get_contents() - empty. I checked the file about 15 times now - it is a 777 writable file. I tried writing to it with file_put_contents() and succeeded, so there is error in the file location and/or permissions. I am obviously missing something, I just can't see it.
Best Regards :)
- 点赞
- 写回答
- 关注问题
- 收藏
- 复制链接分享
- 邀请回答
4条回答
为你推荐
- 如何在php中进行curl并保存会话,并最终使用会话变量
- curl
- php
- javascript
- session
- 1个回答
- 无法通过CURL PHP保留会话ID
- curl
- cookies
- php
- 1个回答
- CURL不保存Cookies(PHP)
- curl
- cookies
- php
- 4个回答
- 存储变量的最佳方法
- php
- 1个回答
- html页面没有通过libcurl获取cookie
- curl
- cookies
- php
- 2个回答
- Apache Cookie保存位置
- curl
- cookies
- apache
- apache
- php
- 1个回答
- Guzzle帖子与cookie和数据
- curl
- php
- 1个回答
- 卷曲 - 将cookie写入文件
- curl
- php
- 3个回答
- PHP curl模拟登录网站但被困在登录页面
- curl
- php
- 2个回答