我试图创建一个重定向,如果用户没有登录,我很困难
以下是使用
的方法<?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">';
}
?>
我不确定这是不是可能,但我会假设那里有一个方法。
答案 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
}
?>
条件开头的"!"
将检查条件是否未经过验证。