PHP继续声明?

时间:2011-07-20 21:57:37

标签: php redirect

我试图创建一个重定向,如果用户没有登录,我很困难

以下是使用

的方法
<?php
if ( is_user_logged_in() ) {
?>

/*My Content*/

<?php
    } else {
        echo '<meta HTTP-EQUIV="REFRESH" content="0; url=http://www.*****.com/non-member.php">';
    }
?>

这工作正常,但是它被延迟了,并且能够在重定向之前看到页面几秒钟。

我想做的是这样的事情。

<?php
if ( is_user_logged_in() ) {
     /*IGNORE NEXT STATEMENT*/
} else {
        echo '<meta HTTP-EQUIV="REFRESH" content="0; url=http://www.****.com/non-member.php">';
    }
?>

我不确定这是不是可能,但我会假设那里有一个方法。

7 个答案:

答案 0 :(得分:8)

对于这种类型的行为,你最好使用标题:

<?php
// place at the top, before anything (including whitespace).
if( !is_user_logged_in() ) {
    header("Location: http://www.****.com/non-member.php");
    die(); // you don't want the rest of the page showing.
}
?>

如果没有让未登录的人首先看到该页面,那将会做你正在尝试的事情。

答案 1 :(得分:1)

尝试

if (!is_user_logged_in()) {
    header("Location: http://www.*****.com/non-member.php");
}

代替。 !是一个布尔值'not',它与if()测试的结果相反,而header()调用是一种比发布嵌入在HTML中的元头更简洁/更可靠的方法。

答案 2 :(得分:0)

if (!is_user_logged_in())
{
        header("Location: http://www.****.com/non-member.php");
        exit;
}
//rest of content.

答案 3 :(得分:0)

使用Location标题进行重定向:

<?php
if ( is_user_logged_in() ) {
     /* snip */
} else {
    header("Location: http://www.****.com/non-member.php");
}
?>

使用此方法会在收到HTTP标头后立即触发重定向,并且HTML页面本身将被完全忽略。

答案 4 :(得分:0)

如果is_user_logged_in()为false,则if语句中的代码实际上不会运行并且几乎被忽略(它仍然会被解析为错误)。您的延迟可能来自您的重定向。尝试使用header()重定向。例如:

头( '位置:http://www.google.com');

答案 5 :(得分:0)

试试这个:

<?php
if (!is_user_logged_in() ) {
      die(header("Location: http://www.****.com/non-member.php"));
}
?>

答案 6 :(得分:0)

为什么不尝试这个

<?php 
if (!is_user_logged_in() ) {
    echo '<meta HTTP-EQUIV="REFRESH" content="0; url=http://www.****.com/non-member.php">';
} else {
    Do your thing
}
?>

条件开头的"!"将检查条件是否未经过验证。

相关问题