通过cURL创建登录会话

时间:2011-12-14 作者:flowdee

使用以下代码时,我遇到了一些问题:登录正常,但仪表板中我要单击的每个链接都会进入404未找到页面。似乎不会创建工作会话?

$username="admin";
$password="admin";
$url="http://www.yourdomain.com/";
$cookie="cookie.txt";

$postdata = "log=". $username ."&pwd=". $password ."&wp-submit=Log%20In&redirect_to=". $url ."wp-admin/&testcookie=1";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, $url . "wp-login.php");
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, 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");
curl_setopt ($ch, CURLOPT_TIMEOUT, 60);
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_REFERER, $url . "wp-admin/");
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
curl_close($ch);
echo $result;
exit;

3 个回复
最合适的回答,由SO网友:Bainternet 整理而成

我不确定这是会话问题,我认为这与WordPress仪表板使用相对链接有关。

一个快速的黑客修复方法是添加

curl_setopt($ch,CURL_COOKIEFILE, \'\');  // Enables session support
然后,在关闭curl处理程序重定向到实际dashbard位置后添加以下内容:

curl_close($ch);
header(\'location: blog/wordpress/wp-admin/\');
die();

SO网友:abby37

@Bainternet。。。回答得好,我已经试过你的方法了,有一些错误我想评论一下

curl\\u setopt($ch,CURLOPT\\u COOKIEFILE,\'cookie.txt\');错过的选项

对于重定向,它添加了以上url,以避免您可以使用

curl\\u setopt($ch,CURLOPT\\u POSTFIELDS,\'log=\'。urlencode($log)。\'&;pwd=\'。urlencode($密码)。\'&;重定向\\u到=\'。urlencode($重定向));

在这里,你可以根据需要提供重定向url到wordpress管理页面的任何部分。

SO网友:Berty

以下是适用于我的代码:

关键的变化是,我从post字符串中删除了名为“testcookie”的参数。

注意:在下面的代码中添加您的网站,而不是“mywordpress”,以及用户名和密码

$curl = curl_init();

//---------------- generic cURL settings start ----------------
$header     = array(
      "Referer: https://mywordpress/wp-login.php",
"Origin: https://mywordpress",
"Content-Type: application/x-www-form-urlencoded",
"Cache-Control: no-cache",
"Pragma: no-cache",
"Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15"
      );


curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_USERAGENT, \'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_3) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.5 Safari/605.1.15\');
curl_setopt($curl, CURLOPT_AUTOREFERER, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_COOKIESESSION, true);
curl_setopt($curl, CURLOPT_COOKIEFILE, \'cookies.txt\');
curl_setopt($curl, CURLOPT_COOKIEJAR, \'cookies.txt\');
//---------------- generic cURL settings end ----------------



$url = \'https://mywordpress/wp-login.php\';
curl_setopt($curl, CURLOPT_URL, $url);

$post = \'log=username&pwd=password&wp-submit=Log+In&redirect_to=https%3A%2F% mywordpress%2Fwp-admin%2F\';
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post);

$output = curl_exec($curl);

curl_close ($curl);

echo ($output)

结束

相关推荐

404 for index.php

我最近在IIS7上从linux切换到windows主机。我的permalinks工作得很好,但由于某种原因,当我尝试查看站点索引(index.php)时,我得到了一个内部wordpress 404。我只能假设这与迁移有关,但我对原因感到困惑。我的网站。配置包含以下内容:<?xml version=\"1.0\" encoding=\"UTF-8\"?> <configuration> <system.webServer>