【问题标题】:How to include external php variable outside of WHMCS into whmcs?如何将WHMCS之外的外部php变量包含到whmcs中?
【发布时间】:2023-03-06 20:13:01
【问题描述】:

我要做的是将网站上的用户名注入 WHMCS。该网站未与 WHMCS 集成。 WHMCS 安装在我网站的子目录中。

网站目录结构如下:

mywebsite.com
  whmcs_directory

mywebsite.com 是一个有会员的网站。它不是 wordpress,它是一个自定义的 php 站点。

whmcs 目录安装为我网站的子目录(在网站根目录内的文件夹中)。

我在 WHMCS 中创建了一个名为“用户名”的自定义字段。

然后我编写了 javascript 来注入和填充用户名字段。我在viewcart.php 中让那部分工作正常。我所说的“工作正常”的意思是,我可以手动定义任何值,如“myvalue”,并使用 javascript 包含它:

<script>
    $('document').ready(function () {
       $('#customfield1').val('myvalue')
    })
</script>

我在 viewcart.php 中包含了那个 javascript。它将myvalue 注入到输入字段中。但是,我不能在那里放任何真正的php,显然每个人的用户名都不是“myvalue”。我需要从 whmcs 外部获取一个动态 php 变量。

================================================ =============

现在,我可以使用名为 test.php 的原始 php 文件来获取我自己的代码。我可以轻松地将站点中的用户名注入到原始 php 文件的输入字段中。

我通过简单地包含标题、下面的“获取用户 ID”代码、编写一些简短的 php 来调用它,然后通过 javascript 将其注入到输入字段中来做到这一点。超级简单。

<?php 

  //get the header
  require_once('theheader.php');

  // get the user id
  $theuser = GetTheUser::loadUser($Auth->id);

  // make variable and stuff
  $username    = $theuser->username;
  echo isset($username) ? validation::safeOutputToScreen($username) : ''; 
?>

<!-- convert to js variable -->
var username = <?php echo json_encode($username); ?>;

<!-- inject username into username input -->
<script>
    $('document').ready(function () {
       $('#inputfield1').val(username)
    })
</script>

这在我的原始 php 页面 test.php 中有效,并将我主站点中的登录用户注入到 test.php 页面的输入字段中。

但是,当我尝试将 GetTheUser 代码(以 smarty {php}{/php} 包装)包含到 viewcart.tpl 中时,不幸的是它会导致 php 错误 Fatal error: Class 'GetTheUser' not found in /home/mysite.com/whmcs/vendor/smarty/smarty/libs/SmartyBC.class.php(464) : eval()'d code on line 2

所以我只需要以某种方式获取此用户名并将其注入 whmcs 中的购物车页面。

我尝试将 php 代码添加到 cart.php,但它导致 whmcs 告诉我 the file is corrupted php 错误页面。所以不幸的是不能将php放入whmcs中的cart.php中。


请告诉我如何从 mysite.com 获取我的外部 php 变量,mysite.com 这是我的自定义 php 站点,并插入到我的 whmcs mysite.com/whmcs/cart.php 上的购物车页面中

【问题讨论】:

    标签: javascript php templates whmcs


    【解决方案1】:

    在 WHMCS 中,您不编辑核心 php 文件,而是编辑模板文件,这些文件位于模板文件夹中。 要选择模板,请使用常规设置,在常规选项卡中选择用于客户区的模板,在订购选项卡中选择用于购物车的模板。

    您可以获得如下用户名:

    在网站上:

    mywebsite.com/test.php

    使用包含用户名的 Get 变量添加链接:

    &lt;a href="mywhmcs/cart.php?act=view&amp;un=someuser"&gt;&lt;/a&gt;

    注意:您可以使用表单来发送帖子请求。

    在 WHMCS 中

    创建以下文件:includes/hooks/website.php

    添加此代码:

    <?php
    add_hook('ClientAreaPageCart', 1, function($vars) {
        if (isset($_GET['un'])) {
            $username = filter_var($_GET['un'], FILTER_SANITIZE_STRING);
            return array('username' => $username);
        }
    
    });
    

    这是在访问购物车页面时执行的挂钩。

    按订单模板

    (如果您没有更改默认值,则位于 templates/orderforms/standard_cart)

    编辑与您定位的服务相关的文件,例如注册域名的模板文件为: adddomain.tpl

    您可以添加我们在上面的钩子中准备的变量,如下所示:

    &lt;input type="hidden" name="username" value="{$username}" /&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-17
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多