PHP,cURL发布到WordPress登录
我正在为一个需要通过链接点击自动登录的客户端的项目进行工作.
我正在使用握手页面来执行以下代码: $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来验证用户,然后再试图将管理界面劫持到当前页面,将其重定向到常规管理界面. 我希望这有帮助!如果您需要更多帮助或解决方案不清楚,请告诉我们. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |