加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP,cURL发布到WordPress登录

发布时间:2020-12-13 14:00:01 所属栏目:PHP教程 来源:网络整理
导读:我正在为一个需要通过链接点击自动登录的客户端的项目进行工作. 我正在使用握手页面来执行以下代码: $username = "admin";$password = "blog";$url = "http://wordpressblogURL/";$cookie = "cookie.txt";$postdata = "log=" . $username . "pwd=" . $passw
我正在为一个需要通过链接点击自动登录的客户端的项目进行工作.

我正在使用握手页面来执行以下代码:

$username = "admin";
$password = "blog";
$url = "http://wordpressblogURL/";
$cookie = "cookie.txt";

$postdata = "log=" . $username . "&pwd=" . $password . "&wp-submit=Log%20In&redirect_to=" . $url . "blog/wordpress/wp-admin/&testcookie=1";
$ch = curl_init();
curl_setopt ($ch,CURLOPT_URL,$url . "blog/wordpress/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,0);
curl_setopt ($ch,CURLOPT_COOKIEJAR,$cookie);
curl_setopt ($ch,CURLOPT_REFERER,CURLOPT_POSTFIELDS,$postdata);
curl_setopt ($ch,CURLOPT_POST,1);
$result = curl_exec ($ch);
curl_close($ch);
echo $result;

exit;

这工作正常它记录我很好.

问题是我相信WordPress的关键字.

要详细说明,我的握手页面(登录我)位于“博客”目录中,我的WordPress应用程序位于“blog”目录中的“wordpress”目录中.浏览器中的URL表示..blog / handshake.php.但是,它在浏览器窗口中具有WordPress的管理部分. WordPress管理链接现在无法正常运行,因为当需要在..blog / wordpress / wp-admin目录中时,URL位于../blog目录中.

在cURL中有没有办法使浏览器中的URL反映实际页面?

我应该使用FSockOPen吗?

Kalium得到这个权利 – WordPress界面中的路径是相对的,导致管理界面以这种方式访问??时无法正常工作.

您的方法有几个方面,所以我想提出一些快速的建议.

首先,我会尝试找到一种从硬件编码中删除$username和$password变量的方法.想想这是多么容易破坏 – 如果通过管理界面更新密码,例如,代码中的硬编码值将不再正确,您的“自动登录”现在将失败.此外,如果某人以某种方式包含该站点并获得对handshake.php的访问权限,那么现在他们已经获得了您的博客的用户名和密码.

看起来您的WordPress安装位于与您编写的握手脚本相同的服务器上,因为/ blog的路径是相对的(在示例代码中).因此,我建议尝试模仿在您的父应用程序登录中验证的会话.过去我已经做了好几次 – 只是不记得具体细节.所以,您的登录脚本不仅将设置您的登录凭据,还可以设置WordPress身份验证所需的会话密钥.

这个过程将涉及到挖掘很多WordPress的代码,但这是开源的美丽!而不是使用cURL和硬编码值,尝试将WordPress的身份验证机制简单集成到应用程序的登录机制中.我从头开始看wp-login.php的源码,然后从那里开始.

如果所有其他的都失败,并且您决定不尝试将会话身份验证机制与WordPress网格化,那么您可以立即解决您的问题(不需要更多地关注您的方法),并对您的代码进行这些更改:

首先,添加以下curl_opt:

curl_setopt($ch,CURLOPT_COOKIEFILE,$cookie);  // Enables session support

然后,关闭cURL处理程序后添加:

curl_close($ch);
// Instead of echoing the result,redirect to the administration interface,now that the valid,authenticated session has been established
header('location: blog/wordpress/wp-admin/');
die();

因此,在这个不太理想的解决方案中,您可以使用cURL来验证用户,然后再试图将管理界面劫持到当前页面,将其重定向到常规管理界面.

我希望这有帮助!如果您需要更多帮助或解决方案不清楚,请告诉我们.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读