使用 Javascript 访问 MyBB PHP 变量



是否可以用Javascript获取MyBB PHP变量?我是一名用户脚本编码器,现在我使用:

var uid = $("#panel").find('a').attr('href').replace(/[^0-9]/g, '');

获取当前用户的用户 ID (uid)。但是,如果我使用 PHP 从用户那里获取 UID,它看起来像这样:

<?php echo {$mybb->user['uid']} ?>

现在进入实际问题。是否可以使用 $mybb->user['uid'] 通过 Javascript 获取 UID?

我的回答是肯定的,你可以,但它有一些限制

好吧,如果您还记得在每个标题中包含模板始终具有以下代码:

<script type="text/javascript">
<!--
    var cookieDomain = "{$mybb->settings['cookiedomain']}";
    var cookiePath = "{$mybb->settings['cookiepath']}";
    var cookiePrefix = "{$mybb->settings['cookieprefix']}";
    var deleteevent_confirm = "{$lang->deleteevent_confirm}";
    var removeattach_confirm = "{$lang->removeattach_confirm}";
    var loading_text = '{$lang->ajax_loading}';
    var saving_changes = '{$lang->saving_changes}';
    var use_xmlhttprequest = "{$mybb->settings['use_xmlhttprequest']}";
    var my_post_key = "{$mybb->post_code}";
    var imagepath = "{$theme['imgdir']}";
// -->
</script>

你可以在任何模板中使用MyBB的变量,但有一个条件:它必须在相关的PHP文件中定义。(当然,该变量必须在括号 { } 内)

例如,headerinclude模板的相关 PHP 文件是 global.php

就是这样。玩得开心 MyBB :)

您可以将插件添加到您的论坛。它称为模板条件。安装完成后,您可以在所有模板中使用 Mybb->user 变量。这个插件有很多应用程序,但对于你的代码,你可以做:

<setvar uservar>$mybb->user['uid']</setvar>
var {$tplvars['uservar']} = $("#panel").find('a').attr('href').replace(/[^0-9]/g, '');

该插件位于MyBBHacks论坛的链接下方。

http://mybbhacks.zingaburga.com/showthread.php?tid=464

首先,您将无法直接访问javascript中的php服务器端变量,但是您可以做几种解决方法。

首先想到的是将其放在您的html页面中的某个地方

<script type="text/javascript">
    <?php echo "var uid = '". $mybb->user['uid']."';" ?>;
</script>

这样做的缺点是,这个变量现在可以在 DOM 中直接查看和编辑。

如果您正在使用(或可以使用)模板,则可以将 PHP 变量放在该模板内容中定义的 JavaScript 变量中。如果您计划在每个页面上运行此 JavaScript,则必须将变量定义添加到headerinclude模板中的脚本块中。

<script type="text/javascript">
<!--
    var userID = {$mybb->user['uid']};
// -->
</script>

该示例脚本会将用户的 uid 放在 JavaScript 变量 userID 中。

请注意,<?php echo $mybb->user['uid']; ?>将无法工作,因为MyBB的模板系统不允许在其中使用PHP标签。您可以改用{$mybb->user['uid'}作为替代方法。

另外,请注意,如果您正在使用插件并在插件文件中的函数中评估模板,您还需要全球化您将要使用的 PHP 变量。

相关内容

  • 没有找到相关文章

最新更新