将PHP逻辑实现到jQuery

Implement PHP logic to jQuery

本文关键字:jQuery 实现 PHP      更新时间:2023-10-24

在我有三个用户的系统中,Ben、ShanePayne,该网站对所有用户都正常运行,并且具有相同的菜单系统。然而,我的任务是从核心添加一个菜单项,并且只有本才能看到。

因此,我在菜单项中添加了Candy,因为Ben还是个孩子,但现在我不能更改PHP中的核心

if('Ben' === $user->name) {
  // Show the Candy Menu
}

但我希望糖果菜单只为本显示,并对其他人隐藏它。

如何使用jQuery

我不想搞砸PHP代码,比如:

<?php if('Ben' === $user->name):?>
  <script ></script>
<?php endif; ?>

我希望用jQuery实现PHP的一些逻辑,所以,我不乱用PHP代码,而是在jQuery中实现逻辑。类似于:

//I am mixing PHP and jQuery here, I know it doesn't work but this is what I am looking for.
if('user' === 'Ben') {
  $('#CandyMenu').show();
}

我该怎么做?

您可以将值存储在JavaScript变量中:

var user = '<?php echo $user->name; ?>';
$('#CandyMenu').toggle(user === 'Ben');

然而,这应该在服务器端完成,当元素被隐藏时,它仍然在页面上。使用jQuery(JavaScript)不是实现这一点的正确方法,特别是当您正在回显敏感数据时。

您将不得不对PHP进行某种更改,否则您的JS无法知道当前用户是谁。

如果你只是想说你不想在你的Javascript代码中间混合PHP,你可以在文档的顶部有一些一次性的PHP来设置任何全局:

<script>
var myAppGlobals = {};
myAppGlobals.showCandyMenu = <?php echo ($user->name === 'Ben' ? 'true': 'false'); ?>;
// or
myAppGlobals.userName = '<?php echo addslashes($user->name); ?>';
</script>

然后使用

if (myAppGlobals.showCandyMenu)
    $("#CandyMenu").show();
// or
if (myAppGlobals.userName === 'Ben')
    $("#CandyMenu").show();

你仍然在混合PHP和JS,但至少你是在顶部完成的,而不是到处混合。

当然,请记住,您用于从客户端设置菜单可见性的任何方法都可能被滥用——任何具有JS知识的人都可以深入研究并显示该菜单选项。这是否是个问题取决于你。