2017-10-23 12 views
0

내가하려는 일은 웹 사이트의 사용자 이름을 WHMCS에 주입하는 것입니다. 이 웹 사이트는 WHMCS와 통합되어 있지 않습니다. WHMCS는 내 웹 사이트의 하위 디렉토리에 설치됩니다.WHMCS 외부에서 외부 PHP 변수를 whmcs에 포함시키는 방법은 무엇입니까?

웹 사이트 디렉토리 구조는 다음과 같습니다

mywebsite.com 
    whmcs_directory 

mywebsite.com는 회원들과 웹 사이트입니다. 그것은 워드 프레스 아니에요, 그것은 사용자 정의 PHP 사이트입니다.

whmcs 디렉토리 (웹 사이트 루트 내부 폴더에) 내 웹 사이트의 하위 디렉토리에 설치됩니다.

나는 "사용자 이름"이라고 WHMCS에서 사용자 정의 필드를 만들었습니다.

은 그 때 나는 주입 및 사용자 이름 필드를 채우기 위해 자바 스크립트를 썼다. 그 부분은 viewcart.php에서 잘 작동합니다. 내가 viewcart.php에서 해당 자바 스크립트를 포함

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

: 내가 "잘 작동"을 의미하는 것은, 내가 수동으로 "myvalue"와 같은 값을 정의하고 자바 스크립트를 사용하여 포함 할 수 있다는 것입니다. 입력 필드에 myvalue을 삽입합니다. 그러나, 거기에 진짜 PHP를 넣을 수 없어, 분명히 모든 사람의 사용자 이름은 "myvalue"가 아닙니다. 외부 PHP에서 동적 PHP 변수를 가져와야합니다.

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

이제는 test.php이라는 원시 PHP 파일을 사용하여 내 자신의 코드를 가져올 수있었습니다. 사이트의 사용자 이름을 원시 PHP 파일의 입력 필드에 쉽게 삽입 할 수 있습니다.

나는 단순히 전화를 몇 가지 간단한 PHP를 작성, 헤더, 아래의 "사용자 ID를 얻을"코드를 포함하고 입력 필드에 자바 스크립트를 통해 주입하여 그것을했다. 슈퍼 쉽습니다. 내 원시 PHP 페이지 test.php에서 작동하고 test.php 페이지에 입력 필드에 내 주요 사이트에 로그인 한 사용자를 주입

<?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> 

. 나는 GetTheUser 코드를 포함 할 때

그러나, viewcart.tpl에 (유식 {php}{/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, PHP는 오류가 발생합니다.

그래서 난 그냥 어떻게 든이 사용자 이름을 얻고 whmcs에서 카트 페이지에 주입 할 필요가있다.

cart.php에 PHP 코드를 추가하려고 시도했지만 PHP 오류 페이지 the file is corrupted을 알리는 결과가 나타납니다. 그래서 불행히도 whmcs에서 php를 cart.php에 넣는 것은 불가능합니다.


내 사용자 정의 PHP 사이트 인 mysite.com에서 내 외부 PHP 변수를 얻을 내 whmcs이 mysite.com/whmcs/cart.php에 카트 페이지에 삽입 할 수있는 방법을 가르쳐주세요

답변

0

WHMCS에서는 핵심 PHP 파일을 편집하지 않고 템플릿 폴더에서 템플릿 파일을 편집합니다. 템플릿을 선택하려면 일반 설정을 사용하고 일반 탭의 클라이언트 영역에 사용할 템플릿을 선택하고 주문 탭에서 장바구니에 사용할 템플릿을 선택합니다.

당신은 다음과 같은 사용자 이름을 얻을 수 있습니다 : 웹 사이트에서

:

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

참고 :

mywebsite.com/test.php

는 사용자 이름이 포함 된 변수를 가져 오기에 링크 추가하기 : 대신 양식을 사용하여 게시물 요청을 보낼 수 있습니다. 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); 
    } 

}); 

이 장바구니 페이지를 방문 할 때 실행할 후크가

WHMCS에서

는 다음과 같은 파일을 만듭니다. 주문 양식 서식 파일에서

(당신이 기본값을 변경하지 않은 경우 템플릿/orderforms/standard_cart에 위치)

편집 예를 들어 타겟팅하는 서비스에 관련된 파일의 도메인 이름을 등록하는 템플릿 파일은 다음과 같습니다 adddomain.tpl

당신은 위의 다음과 같은 우리가 훅 준비 변수를 추가 할 수 있습니다

:

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