Php 需要登录才能访问我的Wordpress站点

Php 需要登录才能访问我的Wordpress站点,php,login,conditional,Php,Login,Conditional,我有一个Wordpress网站,我想被锁定为公众,就像重定向到登录一样,除非你正在注册。所以现在我使用的代码是: <?php if ( is_user_logged_in() ) { } else { $coolio=curPageURL(); if (strpos($coolio,'register.php') !== false) { break; } else{ echo "<script>window.location = 'http://example

我有一个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;
 }
}
?>

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

  • 用户可以简单地禁用Javascript以防止重定向
  • 用户只需向URL添加
    ?register.php
    ,即可避免触发重定向代码
相反,使用服务器端会话变量检查。如果会话中未设置“登录”标志,则重定向到登录页面

这有两大优势:

  • 登录状态保存在某个位置,用户除了登录之外,无法对其进行任何操作
  • 如果恶意用户只是破坏会话cookie,他们只会得到一个新的空白会话,并被视为“未登录”,然后再次被重定向

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

    第二,改为执行此逻辑:

    if(!($_SESSION["loggedin"]== 1))
    {
        if(!(stripos($url,'register.php')))
        {
            header('Location: http://example.com/wp-login.php', true, 302);
            exit;
        }
    }
    

    嗯,换句话说,这个代码糟透了。来吧,告诉我们你的真实感受。@AdamMagyar-信息:不要半途而废,否则Marc B会得到你的后援/更好的后援<代码>:)
    Wow dude感谢您的及时回复。我并不是真的为任何安全密集型的东西做这件事,但我确实看到了。。。不使用糟糕的代码。所以在理论上,我应该像若用户已登录,那个么将变量设置为1,否则设置为0?是的。基本上,在您的实际登录代码中,您可以对代码执行任何等效的
    $\u SESSION['logged\u in']=true
    ,并在所有受保护的页面上进行检查。如果那个值不存在,或者不是真的,那么重定向到login.Awesome man,我马上就去。无限感激你的施舍,哈哈。
    stropos()
    ,嗯?那是新的。或者你的意思是
    stripos()
    :PI在午夜后在iPhone上键入它。。。代码很简单,所以我不担心任何人在实现上会有很多困难。