我有一个网站,有一个Wordpress博客部分。我想在站点中启用单点登录,以便在登录到我的站点时,WP博客也同时登录。我有两个用户表。一个用于现场,另一个用于WP部分。我所做的是添加了一个curl以及用于登录站点博客部分的函数。下面是我使用的代码。
$username = $_POST[\'username\'];
$password = $_POST[\'password\'];
$url="http://www.crickees.svn.local/blog/";
$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);
问题是
wp_signon() 函数正在获取值,但它似乎没有生成所需的cookie。要进行哪些更改才能生成cookie。
我尝试了另一种方法,将值硬编码到wp\\u登录中。php页面。在这里,我将这些值设置到$creds数组中。
wp_signon($creds,$secure_cookie);
但这阻止了从博客注销。所以这个计划没有成功。
帮点忙就好了。提前谢谢。
最合适的回答,由SO网友:Shyam K 整理而成
$username = $_POST[\'username\'];
$password = $_POST[\'password\'];
define(\'__ROOT__\', dirname(\'public_html\'));
require_once (__ROOT__.\'/blog/wp-load.php\');
$credentials = array(\'user_login\' => $username, \'user_password\' => $password);
$user = wp_signon($credentials,$secure_cookie);
这是我在验证网站登录后立即放置的代码。这基本上包括wp负载。php文件,它反过来允许我从我的站点进行WP函数调用。因此,我调用wp\\u signon()函数来传递我网站上发布的值。
Please note this method only works if the username and password of both the the site and WP blog are the same. This is not a proper method for WP Single Sign On, just a hack that worked in my case
我后来在管理面板上禁用了更改密码的选项。