如何将WHMCS之外的外部php变量包含到whmcs中?

时间:2017-10-23 19:40:25

标签: javascript php templates whmcs

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

网站目录结构如下所示:

mywebsite.com
  whmcs_directory

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

whmcs目录安装为我网站的子目录(位于网站根目录下的文件夹中)。

我在WHMCS中创建了一个名为" username"。

的自定义字段

然后我写了javascript注入并填写用户名字段。我在viewcart.php中使该部分正常工作。我的意思是"工作正常",我可以定义任何价值,例如" myvalue"手动并使用javascript包含它:

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

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

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

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

我是通过简单地包含标题来实现的,&#34;获取用户ID&#34;下面的代码,写一些简短的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变量,这是我的自定义php网站并插入我的whmcs上的购物车页面mysite.com/whmcs/cart.php

1 个答案:

答案 0 :(得分:0)

在WHMCS中,您不编辑核心php文件,编辑模板文件夹中的模板文件。 要选择模板,请使用“常规设置”,在“常规”选项卡中选择要用于客户区的模板,以及在“排序”选项卡中用于“购物车”的模板。

您可以获得以下用户名:

在网站上:

mywebsite.com/test.php

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

<a href="mywhmcs/cart.php?act=view&un=someuser"></a>

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

在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

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

<input type="hidden" name="username" value="{$username}" />