我要做的是将网站上的用户名注入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
答案 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}" />