0

我有一个 Wordpress 网站,我想对公众开放,就像重定向到登录一样,除非你正在注册。所以现在我使用的代码是:

<?php
if ( is_user_logged_in() ) {

} else {
 $coolio=curPageURL();
 if (strpos($coolio,'register.php') !== false) {
 break;
 }
 else{
  echo "<script>window.location = 'http://example.com/wp-login.php'</script>";
  break;
 }
 if (strpos($coolio,'login.php') !== false) {
 break;
 }
 else{
  echo "<script>window.location = 'http://example.com/wp-login.php'</script>";
  break;
 }
}
?>

似乎它应该可以工作,但它会在我访问的任何页面上创建一个无限循环。有人知道为什么吗?

注意:curPageUrl只返回当前页面 url。

4

2 回答 2

2

您发布的代码存在一些重大的安全问题:

  • 用户可以简单地禁用 Javascript 以防止被重定向。
  • 用户可以简单地添加?register.php到 URL 以避免触发重定向代码。

相反,使用服务器端会话变量检查。如果会话中未设置“登录”标志,则您将重定向到登录页面。

这有两个巨大的优势:

  1. 登录状态保存在用户无法对其进行任何操作的地方,除了登录
  2. 如果恶意用户只是破坏了会话 cookie,他们只会获得一个新的空白会话并被视为“未登录”,并且无论如何都会再次被重定向。
于 2012-08-12T00:55:43.003 回答
0

我不会使用 JavaScript 进行重定向,而是使用 php。

其次做这个逻辑:

if(!($_SESSION["loggedin"]== 1))
{
    if(!(stripos($url,'register.php')))
    {
        header('Location: http://example.com/wp-login.php', true, 302);
        exit;
    }
}
于 2012-08-12T01:06:38.520 回答