我有一段不起作用的代码。
if ($_SESSION['active'] != 2 && $_SESSION['org_id'] == 0 && $_SESSION['part_id'] == 0)
{
header('Location: index');
die();
}
代码必须执行以下操作,它检查会话。如果'active'不是2,并且org_id为0并且part_id也为零,则它必须自动进入index.php。最后一部分不起作用。因为我对其进行了测试,并且它保持在同一页面上,但是我的SESSION提供的数组是
"Array ( [notify] => OK [user] => werker@company.com [user_id] => 346 [fnln] => test2 [type] => 4 [org_id] => 108 [part_id] => 79 [active] => 2 )"
所以它必须工作。我不知道怎么了...
答案 0 :(得分:2)
您写的if语句不会将您重定向到任何地方,因为它不符合条件。
在您的数组active
中是2,在if语句中,您的说法active
不能是2。并且org_id
不是0,而part_id
不是0。说一定要。
看不出问题所在。如果您希望重定向,那么您的代码做错了什么。
如果要重定向到index.php
,则必须编写
header('location:index.php');
答案 1 :(得分:0)
鉴于您的示例数据,它可以按预期工作:
<?php
$data =
[
'notify' => 'OK',
'user' => 'werker@company.com',
'user_id' => 346,
'fnln' => 'test2',
'type' => 4,
'org_id' => 108,
'part_id' => 79,
'active' => 2
];
if (
$data['active'] != 2
&& $data['org_id'] == 0
&& $data['part_id'] == 0
)
{
echo 'Redirect here.';
} else {
echo 'No redirect.';
}
输出:
No redirect.
您为什么还希望如此?
对于上面给定的数据样本,第一个条件$data['active'] != 2
的计算结果为false。它将在那里短路而不进行进一步检查,因此更宽泛的条件将评估为false。