如果用户未登录,我尝试进行重定向。 所以它应该是这样的:
如果未设置FName且$ page不等于'新主机'或者'登录' 然后将header设置为login并设置错误消息。
所有部件都可以自行工作,但不是在我尝试组装时。
编辑,我现在正在使用交换机,但我仍然对为什么 无法正常工作感兴趣。
||如果任一条件为真,则表示为真。
并检查领先和以下条件是否为真。
我应该使用&&或者这会有所作为吗?
这是我的代码:
if ( !isset($_SESSION['FName']) and
( $page == '/e-Party/Login/Login.php' || $page == '/e-Party/NewHost/NewHost.php')){
echo "not logged in";
$_SESSION['Error'] =
"you must login to use our site,<br>. Or create a account if you don't have one";
header( 'Location: /e-Party/Login/Login.php' );
exit();
}
编辑,这是我的工作开关。
if ( !isset($_SESSION['FName']))
switch ($page) {
case '/e-Party/NewHost/NewHost.php':
break;
case '/e-Party/Login/Login.php':
break;
default:
$_SESSION['Error'] =
"you must login to use our site,<br>. Or creat a account if you dont have one";
header('Location: /e-Party/Login/Login.php');
exit();
}
评论比投票更有帮助,谢谢你的阅读。
答案 0 :(得分:5)
您的if
和switch
不等效:switch
版本等同于
if (!isset($_SESSION['FName']) && $page != '/e-Party/Login/Login.php' && $page != '/e-Party/NewHost/NewHost.php') {
...
}
答案 1 :(得分:0)
我将if更改为一个开关,它按照我的意图完美地工作。
if ( !isset($_SESSION['FName']))
switch ($page) {
case '/e-Party/NewHost/NewHost.php':
break;
case '/e-Party/Login/Login.php':
break;
default:
$_SESSION['Error'] =
"you must login to use our site,<br>. Or creat a account if you dont have one";
header('Location: /e-Party/Login/Login.php');
exit();
}
答案 2 :(得分:0)
你写了
如果未设置FName且$ page不等于'new host'或'login'...
但你写的(在PHP中)
if !isset($_SESSION['FName']) and
($page == '/e-Party/Login/Login.php' || $page == '/e-Party/NewHost/NewHost.php')
即,页面等于A或页面等于B.要使PHP匹配英语:
if !isset($_SESSION['FName']) and
($page != '/e-Party/Login/Login.php' || $page != '/e-Party/NewHost/NewHost.php')
有缺陷。它相当于
if !isset($_SESSION['FName'])