1

我正在使用 usercake 生成指向不同权限的链接。

如果我想要超链接,一切正常,我添加了一个图像位并且它破坏了代码,它会加载但整个地址栏就像没有权限一样。

前:

//Links for permission level 3 (xx)
    if ($loggedInUser->checkPermission(array(3))){
    echo "<div id='xx'>
    <ul>
    <li><a href='xx.php'>xxx</a></li>
    </ul></br ></div>";
    }

//Links for permission level 3 (xx)
    if ($loggedInUser->checkPermission(array(3))){
    echo "<div id='xx'>
    <ul>
    <li><a href="xxx.php"><img src="xx"></a></li>
    </ul></br ></div>";
    }

它只是使菜单栏消失。

有任何想法吗?我错过了一些明显的东西吗?

--update 是不是因为我没有正确逃脱?

4

3 回答 3

2

"字符将终止字符串文字,如果您不使用连接运算符(.,)跟随它们,您的代码将引发语法错误。

您需要使用以下方法逃脱它们\

if ($loggedInUser->checkPermission(array(3))){
    echo "<div id='xx'>
    <ul>
    <li><a href=\"xxx.php\"><img src=\"xx\"></a></li>
    </ul></br ></div>";
}

否则,由于您没有在字符串中输出任何变量,因此您可以使用'(单引号) 开始和终止文字,这意味着您不必在其中转义双引号。例如:

if ($loggedInUser->checkPermission(array(3))){
    echo '<div id="xx">
    <ul>
    <li><a href="xxx.php"><img src="xx"></a></li>
    </ul></br ></div>';
}
于 2014-02-12T10:22:29.290 回答
0

正如您从帖子中突出显示的语法中看到的那样,双引号/单引号存在问题。

您的代码应如下所示:

//Links for permission level 3 (xx)
if ($loggedInUser->checkPermission(array(3))){
  echo "<div id='xx'>
  <ul>
  <li><a href='xxx.php'><img src='xx'></a></li>
  </ul></br ></div>";
}

您的外引号应保持双引号,但字符串中的所有引号都应为单引号。这也很有意义,因为您希望保持代码一致。如果您在字符串中使用了单引号,那么请使用该单引号,除非您绝对必须使用双引号,在这种情况下您可以转义引号:

<li><a href=\"xxx.php\"><img src=\"xx\"></a></li>
于 2014-02-12T10:25:02.363 回答
0

只需关闭然后重新打开 PHP 标记。尽可能将 HTML 与您的代码分开 .. 它更干净,性能更高;)

根据文档其余部分的结构,您可以受益于 PHP 中可用的控制结构替代语法(我建议在这种情况下使用)

  //Links for permission level 3 (xx) 
  if ($loggedInUser->checkPermission(array(3))) : 
?>
  <div id='xx'> 
    <ul>
      <li><a href='xxx.php'><img src='xx'></a></li>
    </ul>
  </div>
<?php endif; 
于 2014-02-12T10:30:06.820 回答