与if语句进行会话

时间:2019-02-19 08:46:20

标签: php session

我有一段不起作用的代码。

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 )"

所以它必须工作。我不知道怎么了...

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。