首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP开关想要中断html内部代码

PHP开关想要中断html内部代码
EN

Stack Overflow用户
提问于 2019-05-17 03:26:44
回答 3查看 78关注 0票数 0

我使用的是iukit和PHP会话。

在我的网站上,我有3个人(角色):管理员,操作员和合作伙伴。

当我使用其中一个页面登录并切换到另一个页面时,如果可能的话,我想返回。

但我需要更改一个导航器链接。

所以我试着让php切换成这样:

首先,我尝试了一个简单的开关

代码语言:javascript
复制
echo '<li ..>foo</li>'; 

但我已经看过文档,这就是我发现的(我认为要好得多)。

我试着用break而不是exit。

代码语言:javascript
复制
<?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;; ?>

结果是所有的链接对每个人都是可用的。为什么交换机无法破解代码?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-17 04:10:12

这里不需要开关箱:

代码语言:javascript
复制
$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>';
}
票数 2
EN

Stack Overflow用户

发布于 2019-05-17 03:41:22

下面是一个可以运行的示例:https://3v4l.org/iQqqn

与其在HTML代码中来回编写PHP,为什么不直接使用switch/case求值,设置变量,并在一行HTML代码中将其echo出来,而不是重复执行呢?或者,如果您正在清理您的$_SESSION数据,您可以像下面的示例那样在HTML中对其进行echo

代码语言:javascript
复制
<?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>

另一个选择

代码语言:javascript
复制
<?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>
票数 0
EN

Stack Overflow用户

发布于 2019-05-17 03:43:20

代码语言:javascript
复制
<?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';
}
?>
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56175382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档