php - 如何避免使用大量的 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/');
}
解决方案
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);
}
}
推荐阅读
- angular - 我的 [(ngModel)] 在 Ionic 4 的自定义组件中不起作用
- c# - 备用键 oData url 不适用于 Microsoft.AspNet.oData 7.1.0
- html - 当窗口的大小发生变化时,我想让虚线响应(适合窗口)?
- c# - 具有依赖注入的布局渲染器不起作用
- android - 如何将应用程序中的文件写入文件夹 Test?
- javascript - 输入框中没有文本时如何显示html5 datalist元素的所有选项?
- sqlite - Sequelize 生成的列 sqlite
- java - Android 应用程序在移动数据连接上运行
- pandas - 使用 pandas 将 .txt 文件分成两列
- c# - 刷新 DataSource 后获取 TreeList 的状态?