4

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

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

获取当前用户的用户标识(uid)。但是,如果我要使用 PHP 从用户那里获取 UID,它将如下所示:

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

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

4

4 回答 4

2

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

好吧,如果你记得在每个 headerinclude 模板中总是有这些代码:

<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 :)

于 2014-01-14T02:36:39.730 回答
1

您可以将插件添加到您的论坛。它被称为模板条件。安装后,您可以在所有模板中使用 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

于 2014-03-29T18:47:11.120 回答
0

首先,您将无法在 javascript 中直接访问 php 服务器端变量,但您可以采取多种变通方法。

想到的第一个是把它放在你的 html 页面的某个地方

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

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

于 2014-01-06T17:40:55.810 回答
0

如果您正在使用(或可以使用)模板,您可以将 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 变量。

于 2014-06-24T16:22:37.897 回答