注销后wordpress中的浏览器后退按钮问题
Brower back button issue in wordpress after logout
我在 functions.php
文件中使用以下重定向代码。
add_action('wp_logout','auto_redirect_after_logout');
function auto_redirect_after_logout(){
$adfsurllogouturl = 'some url';
wp_redirect( $adfsurllogouturl );exit();
}
一切正常。问题是,一旦注销,当我从重定向页面单击浏览器的后退按钮时,它会重定向到 SOMEURL
,它会显示上一页的详细信息。
但我希望它应该出现在登录页面上。
我使用下面的代码修复了它,但它不起作用。
function check_if_user_is_loggedin_action()
{
if ( is_user_logged_in() )
{
header("Expires: Tue, 01 Jan 2000 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
}
}
add_action('init', 'check_if_user_is_loggedin_action');
请给我建议。方法正确吗?
要在成功注销后将用户重定向到所需页面,您可以添加以下代码:
add_action('wp_logout','auto_redirect_after_logout');
function auto_redirect_after_logout(){
wp_safe_redirect( '/login-page' );
exit();
}
使用以下按钮代码:
<a href="<?php echo wp_logout_url(); ?>" title="Logout">Logout</a>
请使用所需的 URL,而不是 /login-page
。
更新
根据此处提供的解决方案:
您可以使用以下代码检查会话变量:
<?php
if(!isset($_SESSION['login'])) :
header("Location: login.php");
?>
当用户注销时销毁会话:
<?php
unset($_SESSION['login']);
session_destroy();
?>
试试这个代码:
<pre><code>
add_action(‘wp_logout’,’auto_redirect_after_logout’);
function auto_redirect_after_logout(){
wp_redirect( home_url() );
exit();
}
add_action( ‘check_admin_referer’, function($action, $result) {
if ( ‘log-out’ == $action && is_user_logged_in() && !empty($_GET[‘action’])
&& ‘logout’ == $_GET[‘action’] ) {
wp_logout();
wp_redirect( home_url() );
exit();
}
}
</code></pre>
我已经解决了我的问题。
我在登录后 functions.php
文件中添加了一个 cookie。
function login_function() {
setcookie('wp_user_logged_in', 1, time() + 31556926, '/');
$_COOKIE['wp_user_logged_in'] = 1;
}
add_action('wp_login', 'login_function');
我在注销后删除 functions.php
文件中的 cookie 值并将其设置为 NULL。
add_action('wp_logout','auto_redirect_after_logout');
function auto_redirect_after_logout(){
unset($_COOKIE['wp_user_logged_in']);
setcookie('wp_user_logged_in', null, -1, '/');
wp_safe_redirect( '/login-page' );
exit();
}
在 footer.php
文件中添加了以下 javascript 以检查用户是否注销并重新加载页面。
<script type="text/javascript">
setInterval(function(){
if (document.cookie.indexOf('wp_user_logged_in') !== -1) {
//do something when user logged in
} else {
//do something when user logged out
window.location.reload();//reload page
}
},2000);
</script>
我在 functions.php
文件中使用以下重定向代码。
add_action('wp_logout','auto_redirect_after_logout');
function auto_redirect_after_logout(){
$adfsurllogouturl = 'some url';
wp_redirect( $adfsurllogouturl );exit();
}
一切正常。问题是,一旦注销,当我从重定向页面单击浏览器的后退按钮时,它会重定向到 SOMEURL
,它会显示上一页的详细信息。
但我希望它应该出现在登录页面上。
我使用下面的代码修复了它,但它不起作用。
function check_if_user_is_loggedin_action()
{
if ( is_user_logged_in() )
{
header("Expires: Tue, 01 Jan 2000 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
}
}
add_action('init', 'check_if_user_is_loggedin_action');
请给我建议。方法正确吗?
要在成功注销后将用户重定向到所需页面,您可以添加以下代码:
add_action('wp_logout','auto_redirect_after_logout');
function auto_redirect_after_logout(){
wp_safe_redirect( '/login-page' );
exit();
}
使用以下按钮代码:
<a href="<?php echo wp_logout_url(); ?>" title="Logout">Logout</a>
请使用所需的 URL,而不是 /login-page
。
更新
根据此处提供的解决方案:
您可以使用以下代码检查会话变量:
<?php
if(!isset($_SESSION['login'])) :
header("Location: login.php");
?>
当用户注销时销毁会话:
<?php
unset($_SESSION['login']);
session_destroy();
?>
试试这个代码:
<pre><code>
add_action(‘wp_logout’,’auto_redirect_after_logout’);
function auto_redirect_after_logout(){
wp_redirect( home_url() );
exit();
}
add_action( ‘check_admin_referer’, function($action, $result) {
if ( ‘log-out’ == $action && is_user_logged_in() && !empty($_GET[‘action’])
&& ‘logout’ == $_GET[‘action’] ) {
wp_logout();
wp_redirect( home_url() );
exit();
}
}
</code></pre>
我已经解决了我的问题。
我在登录后 functions.php
文件中添加了一个 cookie。
function login_function() {
setcookie('wp_user_logged_in', 1, time() + 31556926, '/');
$_COOKIE['wp_user_logged_in'] = 1;
}
add_action('wp_login', 'login_function');
我在注销后删除 functions.php
文件中的 cookie 值并将其设置为 NULL。
add_action('wp_logout','auto_redirect_after_logout');
function auto_redirect_after_logout(){
unset($_COOKIE['wp_user_logged_in']);
setcookie('wp_user_logged_in', null, -1, '/');
wp_safe_redirect( '/login-page' );
exit();
}
在 footer.php
文件中添加了以下 javascript 以检查用户是否注销并重新加载页面。
<script type="text/javascript">
setInterval(function(){
if (document.cookie.indexOf('wp_user_logged_in') !== -1) {
//do something when user logged in
} else {
//do something when user logged out
window.location.reload();//reload page
}
},2000);
</script>