有没有办法检查用户登录并让他登录?

时间:2016-12-16 作者:Prasad Patel

我为自己的网站编写了一个插件,其中我遇到了一个问题,如“用户登录到网站后,如果他注销,然后再次单击浏览器后退按钮,则再次显示上一页,而不是登录页”。对于这个问题,我使用以下js代码修复了它:

history.pushState(null, null, document.URL);
window.addEventListener(\'popstate\', function () {
 history.pushState(null, null, document.URL);
});
浏览器后退按钮问题已修复,但在添加上述js代码后,我遇到了新问题,即浏览器后退按钮完全禁用,如果用户希望使用浏览器后退按钮浏览网站网页,该怎么办?

IS there any hook that I can write in theme functions.php file? 这样,如果用户在注销后单击浏览器后退按钮,我就可以解决此问题?谁能告诉我怎么修吗?

我尝试了下面的一个,但也不起作用:

<script>
   window.onhashchange = function() {
       <?php if( ! is_user_logged_in()) { $this->tewa_login(); } ?>
   }
<script>
谁能告诉我怎么了!

2 个回复
SO网友:cjbj

当用户logs out 当前用户会话已销毁,无法加载必须登录用户的新页面。但是,当您点击浏览器上的“后退”按钮时,它通常会从本地缓存中检索页面。没有与服务器联系以查看当前会话是否仍然有效。

因此,您需要做的是检测backspace按钮是否被点击,并在这种情况下检查会话的有效性。这意味着页面中必须包含一段JavaScript,因为此操作需要在用户端进行。我不是安全专家,但检测退格的常见方法如下:

window.onhashchange = function() {
 .. your action ..
 }
some snags 使用此方法。现在,您的操作必须是回调服务器。那个问题has been answered before 这里是WPSE。

SO网友:prosti

只是@cjbj答案的一些附录。这可能会对你有所帮助,这就是我写这篇文章的原因。

WordPress“会话”实际上是一个cookie。它开始于wordpress_logged_in

enter image description here

注销后:

enter image description here

刷新后,仍将没有cookie:

enter image description here

因此,您需要了解:

如果他单击浏览器后退按钮,则会再次显示上一页,而不是登录页”。

这不是问题,这很正常。

如果计划更改默认值,请尝试使用JavaScript页面刷新等。