首页 > 解决方案 > 如何避免使用大量的 issets?

问题描述

我在一个 PHP 项目中工作,我有 7 种类型的用户,所以我必须为每种类型的用户预期 7 个 $_SESSION 变量。有没有办法可以避免在每个 PHP 文件中这样做?

<?php
if (isset($_GET['logout'])) {
    session_destroy();
    header('Location: .');
}

if (isset($_SESSION['admin'])) {
    header('Location: views/admin/');
}

if (isset($_SESSION['info'])) {
    header('Location: views/informatica/');
}

if (isset($_SESSION['subA'])) {
    header('Location: views/subA/');
}

if (isset($_SESSION['subB'])) {
    header('Location: views/subB/');
}

if (isset($_SESSION['oficina'])) {
    header('Location: views/oficina/');
}

if (isset($_SESSION['compras'])) {
    header('Location: views/compras/');
}

if (isset($_SESSION['auditoria'])) {
    header('Location: views/auditoria/');
}

标签: php

解决方案


if (isset($_GET['logout'])) {
    session_destroy();
    header('Location: /');
    exit();
}

$rolesLocations = [
    'admin' => '/views/admin',
    'info' => '/views/informatica',
    'subA' => '/views/subA',
    'subB' => '/views/subB',
    'oficina' => '/views/oficina',
    'compras' => '/views/compras',
    'auditoria' => '/views/auditoria',
];

foreach ($rolesLocations as $role => $location) {
    if (isset($_SESSION[$role])) {
        header('Location: ' . $location);
    }
}

推荐阅读