类似于上的问题Get wp_logout_url function to work on external (non-Wordpress) page
我面临的问题是,子域位于不同的服务器上,因此我无法包含/要求wp-blog-header.php
文件
有没有一种方法可以让我将允许即时注销的域列入白名单,就像您可以为redirect whitelist.
如果没有,我如何允许子域(具有远程sql访问权限)创建有效的注销链接,绕过“是否确实要注销”通知。
回复:@SatbirKira这样做是为了确保注销在一定程度上是“有效的”:
设置每24小时一次的注销URL,使其具有附加随机字符串的查询字符串,例如:http://website.com/custom_logout.php?confirm=sj239ks
, 之后是http://website.com/custom_logout.php?confirm=32k9la3
每次更改时,它都会编辑一个特定文件(另一台服务器上的custom\\u logout.php或其自己的服务器或其他服务器上的txt/ini文件),并创建一个字符串数组/列表
$confirmkeys = array("sj239ks", "32k9la3");
或
[confirmkeys]
confirm[] = sj239ks
confirm[] = 32k9la3
它在文件中只有两个确认键,一个用于24小时前(以防有人仍打开页面),另一个用于当前24小时)
I guess the same thing could be done individually instead of globally but is there much need for that?
<编辑
custom_logout.php
添加检查以查看是否
$_SERVER[\'HTTP_REFERER\']
来自同一域(所有子域)。如果随后设置
matching_referer
为真。如果没有,请将变量设置为false。
编辑custom_logout.php
添加检查以查看查询字符串是否与存储在特定文件中的字符串匹配。(使用辅助服务器上的txt/ini文件最简单?)如果匹配,则设置matching_confirm
为真。如果没有,请将变量设置为false。
编辑custom_logout.php
如果其中一个(任何)检查为真,那么它就可以干净地注销,如果两个检查都是错误的,那么通过将它们发送到/wp-login.php?action=logout
页
最合适的回答,由SO网友:Satbir Kira 整理而成
您可以创建一个名为custom\\u logout的文件。php并将其放在根wordpress目录中。此包含
<?php
require_once("wp-load.php"); //load wordpress
wp_logout(); //logout
exit(); //end page
?>
然后在您的子域站点中打开带有锚定标记的url
<a href="http://youwebsite.com/custom_logout.php">Logout</a>
您无法轻松创建白名单,因为这将涉及使用$\\u SERVER[\'HTTP\\u REFERER\']检查用户来自何处,这是不可靠的(通常为空)。不幸的是,没有简单的解决方案。
Reply To Your Edit
如果临时关键方法是一种负责任的折衷方案,那么您完全可以自由地实施它。但是,您可以发送当天的md5哈希,而不是两个随机键。在两台服务器上使用相同的加密盐。现在,您只需在custom\\u注销中重新计算昨天的哈希值和当天的哈希值。php并将其与传入的get变量进行比较。它消除了对txt/ini文件的需要。