PHP Switch希望破解代码中的html

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (11)

我正在使用iukit和PHP会话。

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

当我使用其中一个登录并切换到另一个页面时,我想返回。

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

所以我试着像这样进行php切换:

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

echo '<li ..>foo</li>'; 

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

我试图放弃而不是退出。

<?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;; ?>

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

提问于
用户回答回答于

这里不需要switch case:

$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>';
}
用户回答回答于

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

而不是写的PHP进出的HTML代码,为什么不直接与评估switch/case,设置变量,echo他们出1行的HTML代码,而不是重复呢?或者,如果您正在清理$_SESSION数据,那么您可以在示例中使用以下内容:echoHTML

<?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>

扫码关注云+社区

领取腾讯云代金券