2017-10-23 2 views
0

Was ich versuche zu tun ist, den Benutzernamen von der Website in WHMCS zu injizieren. Die Website ist NICHT in WHMCS integriert. WHMCS ist in einem Unterverzeichnis meiner Website installiert.Wie kann man externe PHP-Variablen außerhalb von WHMCS in whmcs einbeziehen?

Die Website Verzeichnisstruktur sieht wie folgt aus:

mywebsite.com 
    whmcs_directory 

mywebsite.com eine Website mit Mitgliedern ist. Es ist nicht Wordpress, es ist eine benutzerdefinierte PHP-Site.

Das Verzeichnis whmcs wird als Unterverzeichnis meiner Website (in einem Ordner im Stammverzeichnis der Website) installiert.

Ich erstellte ein benutzerdefiniertes Feld in WHMCS namens "Benutzername".

Dann schrieb ich Javascript zu injizieren und füllen Sie das Feld Benutzername. Ich habe das Teil gut funktioniert in viewcart.php. Was ich damit meine „funktioniert gut“, ist, dass ich einen Wert wie „myvalue“ definieren kann manuell und schließen es mit Hilfe von Javascript:

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

ich in viewcart.php, dass Javascript enthalten. Es injiziert myvalue in das Eingabefeld. Allerdings kann ich dort kein echtes PHP einbringen, und offensichtlich ist jeder Benutzername nicht "mein Wert". Ich muss eine dynamische php-Variable von außerhalb holen whmcs.

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

Jetzt konnte ich meinen eigenen Code mit einer rohen PHP-Datei test.php gerade gut erhalten. Ich könnte den Benutzernamen leicht von der Site in ein Eingabefeld in einer rohen PHP-Datei einfügen.

Ich tat es, indem ich einfach die Kopfzeile, den "get user id" Code unten, ein paar kurze php schreibe, um es aufzurufen, und dann über Javascript in das Eingabefeld injizieren. Super einfach.

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

, die in meiner rohen PHP-Seite arbeitet test.php und die in Benutzern in meiner Haupt-Website in das Eingabefeld in test.php Seite angemeldet einspritzt.

Allerdings, wenn ich versuchen, den GetTheUser Code enthalten (eingewickelt in Smarty {php}{/php}) in viewcart.tpl leider führt es in einer PHP-Fehler, 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.

Also ich muss nur irgendwie diesen Benutzernamen und injizieren Sie es in die Warenkorb-Seite in whmcs.

Ich habe versucht, PHP-Code in cart.php hinzuzufügen, aber es ergibt sich in WMCs mir the file is corrupted PHP-Fehlerseite zu sagen. Es ist also leider nicht möglich php in die cart.php zu stellen.


Sie mir bitte sagen, wie ich meine außerhalb PHP Variable von mysite.com bekommen können, die meine benutzerdefinierte PHP-Seite ist, und legen Sie in den Warenkorb Seite auf meinem WHMCS mysite.com/whmcs/cart.php

Antwort

0

In WHMCS bearbeiten Sie keine PHP-Kerndateien, Sie bearbeiten Vorlagendateien, die sich im Vorlagenordner befinden. Um Vorlagen auszuwählen, verwenden Sie Allgemeine Einstellungen. Sie wählen aus, welche Vorlage für den Kundenbereich auf der Registerkarte Allgemein und welche Vorlage für den Warenkorb auf der Registerkarte Bestellung verwendet werden soll.

können Sie Benutzernamen erhalten, wie folgend:

In der Website:

mywebsite.com/test.php

Link hinzufügen mit Get-Variable mit dem Namen:

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

Hinweis: Sie können stattdessen ein Formular verwenden, um eine Postanforderung zu senden.

In WHMCS

Erstellen Sie die folgende Datei: includes/hooks/website.php

Fügen Sie diesen Code hinzu:

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

}); 

Dies ist ein Haken auszuführen, wenn Wagen Seite besucht wird.

Um Formularvorlage

(bei templates/Bestellformulare/standard_cart gelegen, wenn Sie nicht das Standard ändern)

die an den Dienst zum Beispiel die, Sie Targeting, verwandte Datei bearbeiten Vorlagendatei für einen Domain-Namen Registrierung ist: adddomain.tpl

Sie Variable hinzufügen können wir in den Haken oben hergestellt, wie folgend:

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