我使用的是iukit和PHP会话。
在我的网站上,我有3个人(角色):管理员,操作员和合作伙伴。
当我使用其中一个页面登录并切换到另一个页面时,如果可能的话,我想返回。
但我需要更改一个导航器链接。
所以我试着让php切换成这样:
首先,我尝试了一个简单的开关
echo '<li ..>foo</li>';
但我已经看过文档,这就是我发现的(我认为要好得多)。
我试着用break而不是exit。
<?php switch($_SESSION['person_role']): ?>
<?php case 'admin': ?>
<li class="uk-margin-left uk-margin-right"><a href="admin.html">Admin</a></li>
<?php exit;?>
<?php case 'operator': ?>
<li class="uk-margin-left uk-margin-right"><a href="operator.html">Operator</a></li>
<?php exit;?>
<?php case 'partner': ?>
<li class="uk-margin-left uk-margin-right"><a href="partner.html">Partner</a></li>
<?php exit;?>
<?php default: ?>
nothing
<?php endswitch;; ?>
结果是所有的链接对每个人都是可用的。为什么交换机无法破解代码?
发布于 2019-05-17 04:10:12
这里不需要开关箱:
$roles = array(
'admin' => 'Admin',
'operator' => 'Operator',
'partner' => 'Partner'
);
if (array_key_exists($_SESSION['person_role'], $roles)) {
echo '<li class="uk-margin-left uk-margin-right"><a href="' . $_SESSION['person_role'] . '.html">' . $roles[$_SESSION['person_role']] . '</a></li>';
}
发布于 2019-05-17 03:41:22
下面是一个可以运行的示例:https://3v4l.org/iQqqn
与其在HTML
代码中来回编写PHP
,为什么不直接使用switch/case
求值,设置变量,并在一行HTML
代码中将其echo
出来,而不是重复执行呢?或者,如果您正在清理您的$_SESSION
数据,您可以像下面的示例那样在HTML
中对其进行echo
:
<?php
$_SESSION['person_role'] = 'admin'; // set for testing demo
// Either do your switch case and set variables...
$page = "default";
$role = "default";
// You technically don't even need the variables, but this example
// shows that based on the case, if you need to use a different name
// for role/page this is where you would do so...
switch($_SESSION['person_role']) {
case 'admin':
$page = $role = "admin";
break;
case 'operator':
$page = $role = "operator";
break;
case 'partner':
$page = $role = "partner";
break;
}
?>
Example W/ Switch Case..
<ul>
<li class="uk-margin-left uk-margin-right">
<a href="<?php echo $page; ?>.html">
<?php echo ucwords($role); ?>
</a>
</li>
</ul>
另一个选择
<?php
// Just use $_SESSION data (assuming sanitized) in the HTML...
$_SESSION['person_role'] = 'operator'; // set for testing demo
?>
Example just using $_SESSION data..
<ul>
<li class="uk-margin-left uk-margin-right">
<a href="<?php echo $_SESSION['person_role']; ?>.html">
<?php echo ucwords($_SESSION['person_role']); ?>
</a>
</li>
</ul>
发布于 2019-05-17 03:43:20
<?php
$roles = array("admin", "operator", "partner");
$current_role = $_SESSION['person_role'];
if(in_array($current_role, $roles)) {
echo '<li class="uk-margin-left uk-margin-right"><a href="'.$current_role.'\.html">'.ucfirst($current_role).'</a>
</li>';
} else {
echo 'No role in session';
}
?>
https://stackoverflow.com/questions/56175382
复制相似问题