Jump to content

Hooks Example


dansk

Recommended Posts

Hello, 

Can anyone provide an example of a fully working hook in WHMCS? The tutorial in the manual stops short of implementing an actual working hook so one can see how they are implemented. The two I need to create for integration into our site are client login and registration. 

Any examples, videos, cookbooks, or the such are greatly appreciated!

Cheers

Link to comment
Share on other sites

Hi @dansk

Are you trying to let you customers login to your WHMCS system from your existing web-site that you own/run?

If so that you don't need a hook you can find what you are looking for under the Utilities -> Intergration Code section of the WHMCS Admin Portal.

 

Link to comment
Share on other sites

On 17/07/2018 at 23:24, dansk said:

Can anyone provide an example of a fully working hook in WHMCS?

this community is full of working hooks! :768_mag_right:

14 minutes ago, redit said:

If so that you don't need a hook you can find what you are looking for under the Utilities -> Integration Code section of the WHMCS Admin Portal.

:957_heavy_check_mark:

Link to comment
Share on other sites

Hello @redit,

Thanks for your reply. I have that worked out actually. The issue is I would also like customers to register through the website, and also understand how to complete a fully working hook for WHMCS going forward, The example in the documentation stops short of that. 

Here's the code to the registration form I tried to use. However, what it is not doing is exchanging a token with WHMCS. Otherwise, it actually works. 

Kind thanks

DanSK

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Register - H-Desk Pro LLC</title>

    <!-- Styling -->
<link href="//fonts.googleapis.com/css?family=Open+Sans:300,400,600|Raleway:400,700" rel="stylesheet">
<link href="/cs/templates/six/css/all.min.css?v=cff37f" rel="stylesheet">
<link href="/cs/templates/six/css/custom.css" rel="stylesheet">

<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
  <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
  <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->

<script type="text/javascript">
    var csrfToken = 'b37144756af4ab87113a8efcbb78e6466e09d654',
        markdownGuide = 'Markdown Guide',
        locale = 'en',
        saved = 'saved',
        saving = 'autosaving',
        whmcsBaseUrl = "/cs";
</script>
<script src="/cs/templates/six/js/scripts.min.js?v=cff37f"></script>



    

</head>
<body data-phone-cc-input="1">



<section id="header">
    <div class="container">
        <ul class="top-nav">
                            <li>
                    <a href="#" class="choose-language" data-toggle="popover" id="languageChooser">
                        English
                        <b class="caret"></b>
                    </a>
                    <div id="languageChooserContent" class="hidden">
                        <ul>
                                                            <li>
                                    <a href="/cs/register.php?language=arabic">العربية</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=azerbaijani">Azerbaijani</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=catalan">Català</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=chinese">中文</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=croatian">Hrvatski</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=czech">Čeština</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=danish">Dansk</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=dutch">Nederlands</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=english">English</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=estonian">Estonian</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=farsi">Persian</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=french">Français</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=german">Deutsch</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=hebrew">עברית</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=hungarian">Magyar</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=italian">Italiano</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=macedonian">Macedonian</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=norwegian">Norwegian</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=portuguese-br">Português</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=portuguese-pt">Português</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=romanian">Română</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=russian">Русский</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=spanish">Español</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=swedish">Svenska</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=turkish">Türkçe</a>
                                </li>
                                                            <li>
                                    <a href="/cs/register.php?language=ukranian">Українська</a>
                                </li>
                                                    </ul>
                    </div>
                </li>
                                        <li>
                    <a href="/cs/clientarea.php">Login</a>
                </li>
                                    <li>
                        <a href="/cs/register.php">Register</a>
                    </li>
                                <li class="primary-action">
                    <a href="/cs/cart.php?a=view" class="btn">
                        View Cart
                    </a>
                </li>
                                </ul>

                    <a href="https://subscriptions.h-desk.pro/cs/cart.php?gid=2" class="logo logo-text">H-Desk Pro LLC</a>
        
    </div>
</section>

<section id="main-menu">

    <nav id="nav" class="navbar navbar-default navbar-main" role="navigation">
        <div class="container">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#primary-nav">
                    <span class="sr-only">Toggle navigation</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
            </div>

            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse" id="primary-nav">

                <ul class="nav navbar-nav">

                        <li menuItemName="Home" class="" id="Primary_Navbar-Home">
        <a href="/cs/index.php">
                        Home
                                </a>
            </li>
    <li menuItemName="Store" class="dropdown" id="Primary_Navbar-Store">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                        Store
                        &nbsp;<b class="caret"></b>        </a>
                    <ul class="dropdown-menu">
                            <li menuItemName="Browse Products Services" id="Primary_Navbar-Store-Browse_Products_Services">
                    <a href="/cs/cart.php">
                                                Browse All
                                            </a>
                </li>
                            <li menuItemName="Shop Divider 1" class="nav-divider" id="Primary_Navbar-Store-Shop_Divider_1">
                    <a href="">
                                                -----
                                            </a>
                </li>
                            <li menuItemName="Help Desk Services" id="Primary_Navbar-Store-Help_Desk_Services">
                    <a href="/cs/cart.php?gid=2">
                                                Help Desk Services
                                            </a>
                </li>
                        </ul>
            </li>
    <li menuItemName="Announcements" class="" id="Primary_Navbar-Announcements">
        <a href="/cs/index.php?rp=/announcements">
                        Announcements
                                </a>
            </li>
    <li menuItemName="Knowledgebase" class="" id="Primary_Navbar-Knowledgebase">
        <a href="/cs/index.php?rp=/knowledgebase">
                        Knowledgebase
                                </a>
            </li>
    <li menuItemName="Network Status" class="" id="Primary_Navbar-Network_Status">
        <a href="/cs/serverstatus.php">
                        Network Status
                                </a>
            </li>
    <li menuItemName="Affiliates" class="" id="Primary_Navbar-Affiliates">
        <a href="/cs/affiliates.php">
                        Affiliates
                                </a>
            </li>
    <li menuItemName="Contact Us" class="" id="Primary_Navbar-Contact_Us">
        <a href="/cs/contact.php">
                        Contact Us
                                </a>
            </li>


                </ul>

                <ul class="nav navbar-nav navbar-right">

                        <li menuItemName="Account" class="dropdown" id="Secondary_Navbar-Account">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                        Account
                        &nbsp;<b class="caret"></b>        </a>
                    <ul class="dropdown-menu">
                            <li menuItemName="Login" id="Secondary_Navbar-Account-Login">
                    <a href="/cs/clientarea.php">
                                                Login
                                            </a>
                </li>
                            <li menuItemName="Register" id="Secondary_Navbar-Account-Register">
                    <a href="/cs/register.php">
                                                Register
                                            </a>
                </li>
                            <li menuItemName="Divider" class="nav-divider" id="Secondary_Navbar-Account-Divider">
                    <a href="">
                                                -----
                                            </a>
                </li>
                            <li menuItemName="Forgot Password?" id="Secondary_Navbar-Account-Forgot_Password?">
                    <a href="/cs/pwreset.php">
                                                Forgot Password?
                                            </a>
                </li>
                        </ul>
            </li>


                </ul>

            </div><!-- /.navbar-collapse -->
        </div>
    </nav>

</section>




<section id="main-body">
    <div class="container">
        <div class="row">

                                    <div class="col-md-9 pull-md-right">
                    <div class="header-lined">
    <h1>Register <small>Create an account with us . . .</small></h1>
    <ol class="breadcrumb">
            <li>
            <a href="index.php">            Portal Home
            </a>        </li>
            <li class="active">
                        Register
                    </li>
    </ol>
</div>

                </div>
                        <div class="col-md-3 pull-md-left sidebar">
                    <div menuItemName="Already Registered" class="panel panel-sidebar panel-sidebar">
        <div class="panel-heading">
            <h3 class="panel-title">
                <i class="glyphicon glyphicon-user"></i>&nbsp;                Already Registered?
                                <i class="fa fa-chevron-up panel-minimise pull-right"></i>
            </h3>
        </div>
                            <div class="list-group">
                                                            <div menuItemName="Already Registered Heading" class="list-group-item" id="Primary_Sidebar-Already_Registered-Already_Registered_Heading">
                                                                                    Already registered with us? If so, click the button below to login to our client area from where you can manage your account.
                        </div>
                                                                                <a menuItemName="Login" href="/cs/login.php" class="list-group-item" id="Primary_Sidebar-Already_Registered-Login">
                                                        <i class="fa fa-user"></i>&nbsp;                            Login
                        </a>
                                                                                <a menuItemName="Lost Password Reset" href="/cs/pwreset.php" class="list-group-item" id="Primary_Sidebar-Already_Registered-Lost_Password_Reset">
                                                        <i class="fa fa-asterisk"></i>&nbsp;                            Lost Password Reset
                        </a>
                                                </div>
                    </div>
    
            </div>
                <!-- Container for main page display content -->
        <div class="col-md-9 pull-md-right main-content">
            


<script type="text/javascript" src="/cs/assets/js/StatesDropdown.js"></script>
<script type="text/javascript" src="/cs/assets/js/PasswordStrength.js"></script>
<script>
    window.langPasswordStrength = "Password Strength";
    window.langPasswordWeak = "Weak";
    window.langPasswordModerate = "Moderate";
    window.langPasswordStrong = "Strong";
    jQuery(document).ready(function()
    {
        jQuery("#inputNewPassword1").keyup(registerFormPasswordStrengthFeedback);
    });
</script>


<div id="registration">
    <form method="post" class="using-password-strength" action="/cs/register.php" role="form" name="orderfrm" id="frmCheckout">
<input type="hidden" name="token" value="b37144756af4ab87113a8efcbb78e6466e09d654" />
        <input type="hidden" name="register" value="true"/>

        <div id="containerNewUserSignup">

            

            <div class="sub-heading">
                <span>Personal Information</span>
            </div>
            <div class="row">
                <div class="col-sm-6">
                    <div class="form-group prepend-icon">
                        <label for="inputFirstName" class="field-icon">
                            <i class="fa fa-user"></i>
                        </label>
                        <input type="text" name="firstname" id="inputFirstName" class="field form-control" placeholder="First Name" value="" required autofocus>
                    </div>
                </div>
                <div class="col-sm-6">
                    <div class="form-group prepend-icon">
                        <label for="inputLastName" class="field-icon">
                            <i class="fa fa-user"></i>
                        </label>
                        <input type="text" name="lastname" id="inputLastName" class="field form-control" placeholder="Last Name" value="" required>
                    </div>
                </div>
                <div class="col-sm-6">
                    <div class="form-group prepend-icon">
                        <label for="inputEmail" class="field-icon">
                            <i class="fa fa-envelope"></i>
                        </label>
                        <input type="email" name="email" id="inputEmail" class="field form-control" placeholder="Email Address" value="">
                    </div>
                </div>
                <div class="col-sm-6">
                    <div class="form-group prepend-icon">
                        <label for="inputPhone" class="field-icon">
                            <i class="fa fa-phone"></i>
                        </label>
                        <input type="tel" name="phonenumber" id="inputPhone" class="field" placeholder="Phone Number" value="">
                    </div>
                </div>
            </div>

            <div class="sub-heading">
                <span>Billing Address</span>
            </div>

            <div class="row">
                <div class="col-sm-12">
                    <div class="form-group prepend-icon">
                        <label for="inputCompanyName" class="field-icon">
                            <i class="fa fa-building"></i>
                        </label>
                        <input type="text" name="companyname" id="inputCompanyName" class="field" placeholder="Company Name (Optional)" value="">
                    </div>
                </div>
                <div class="col-sm-12">
                    <div class="form-group prepend-icon">
                        <label for="inputAddress1" class="field-icon">
                            <i class="fa fa-building-o"></i>
                        </label>
                        <input type="text" name="address1" id="inputAddress1" class="field form-control" placeholder="Street Address" value=""  required>
                    </div>
                </div>
                <div class="col-sm-12">
                    <div class="form-group prepend-icon">
                        <label for="inputAddress2" class="field-icon">
                            <i class="fa fa-map-marker"></i>
                        </label>
                        <input type="text" name="address2" id="inputAddress2" class="field" placeholder="Street Address 2" value="">
                    </div>
                </div>
                <div class="col-sm-4">
                    <div class="form-group prepend-icon">
                        <label for="inputCity" class="field-icon">
                            <i class="fa fa-building-o"></i>
                        </label>
                        <input type="text" name="city" id="inputCity" class="field form-control" placeholder="City" value=""  required>
                    </div>
                </div>
                <div class="col-sm-5">
                    <div class="form-group prepend-icon">
                        <label for="state" class="field-icon" id="inputStateIcon">
                            <i class="fa fa-map-signs"></i>
                        </label>
                        <label for="stateinput" class="field-icon" id="inputStateIcon">
                            <i class="fa fa-map-signs"></i>
                        </label>
                        <input type="text" name="state" id="state" class="field form-control" placeholder="State" value=""  required>
                    </div>
                </div>
                <div class="col-sm-3">
                    <div class="form-group prepend-icon">
                        <label for="inputPostcode" class="field-icon">
                            <i class="fa fa-certificate"></i>
                        </label>
                        <input type="text" name="postcode" id="inputPostcode" class="field form-control" placeholder="Postcode" value="" required>
                    </div>
                </div>
                <div class="col-sm-12">
                    <div class="form-group prepend-icon">
                        <label for="inputCountry" class="field-icon" id="inputCountryIcon">
                            <i class="fa fa-globe"></i>
                        </label>
                        <select name="country" id="inputCountry" class="field form-control">
                                                            <option value="AF">
                                    Afghanistan
                                </option>
                                                            <option value="AX">
                                    Aland Islands
                                </option>
                                                            <option value="AL">
                                    Albania
                                </option>
                                                            <option value="DZ">
                                    Algeria
                                </option>
                                                            <option value="AS">
                                    American Samoa
                                </option>
                                                            <option value="AD">
                                    Andorra
                                </option>
                                                            <option value="AO">
                                    Angola
                                </option>
                                                            <option value="AI">
                                    Anguilla
                                </option>
                                                            <option value="AQ">
                                    Antarctica
                                </option>
                                                            <option value="AG">
                                    Antigua And Barbuda
                                </option>
                                                            <option value="AR">
                                    Argentina
                                </option>
                                                            <option value="AM">
                                    Armenia
                                </option>
                                                            <option value="AW">
                                    Aruba
                                </option>
                                                            <option value="AU">
                                    Australia
                                </option>
                                                            <option value="AT">
                                    Austria
                                </option>
                                                            <option value="AZ">
                                    Azerbaijan
                                </option>
                                                            <option value="BS">
                                    Bahamas
                                </option>
                                                            <option value="BH">
                                    Bahrain
                                </option>
                                                            <option value="BD">
                                    Bangladesh
                                </option>
                                                            <option value="BB">
                                    Barbados
                                </option>
                                                            <option value="BY">
                                    Belarus
                                </option>
                                                            <option value="BE">
                                    Belgium
                                </option>
                                                            <option value="BZ">
                                    Belize
                                </option>
                                                            <option value="BJ">
                                    Benin
                                </option>
                                                            <option value="BM">
                                    Bermuda
                                </option>
                                                            <option value="BT">
                                    Bhutan
                                </option>
                                                            <option value="BO">
                                    Bolivia
                                </option>
                                                            <option value="BA">
                                    Bosnia And Herzegovina
                                </option>
                                                            <option value="BW">
                                    Botswana
                                </option>
                                                            <option value="BV">
                                    Bouvet Island
                                </option>
                                                            <option value="BR">
                                    Brazil
                                </option>
                                                            <option value="IO">
                                    British Indian Ocean Territory
                                </option>
                                                            <option value="BN">
                                    Brunei Darussalam
                                </option>
                                                            <option value="BG">
                                    Bulgaria
                                </option>
                                                            <option value="BF">
                                    Burkina Faso
                                </option>
                                                            <option value="BI">
                                    Burundi
                                </option>
                                                            <option value="KH">
                                    Cambodia
                                </option>
                                                            <option value="CM">
                                    Cameroon
                                </option>
                                                            <option value="CA">
                                    Canada
                                </option>
                                                            <option value="CV">
                                    Cape Verde
                                </option>
                                                            <option value="KY">
                                    Cayman Islands
                                </option>
                                                            <option value="CF">
                                    Central African Republic
                                </option>
                                                            <option value="TD">
                                    Chad
                                </option>
                                                            <option value="CL">
                                    Chile
                                </option>
                                                            <option value="CN">
                                    China
                                </option>
                                                            <option value="CX">
                                    Christmas Island
                                </option>
                                                            <option value="CC">
                                    Cocos (Keeling) Islands
                                </option>
                                                            <option value="CO">
                                    Colombia
                                </option>
                                                            <option value="KM">
                                    Comoros
                                </option>
                                                            <option value="CG">
                                    Congo
                                </option>
                                                            <option value="CD">
                                    Congo, Democratic Republic
                                </option>
                                                            <option value="CK">
                                    Cook Islands
                                </option>
                                                            <option value="CR">
                                    Costa Rica
                                </option>
                                                            <option value="CI">
                                    Cote D'Ivoire
                                </option>
                                                            <option value="HR">
                                    Croatia
                                </option>
                                                            <option value="CU">
                                    Cuba
                                </option>
                                                            <option value="CW">
                                    Curacao
                                </option>
                                                            <option value="CY">
                                    Cyprus
                                </option>
                                                            <option value="CZ">
                                    Czech Republic
                                </option>
                                                            <option value="DK">
                                    Denmark
                                </option>
                                                            <option value="DJ">
                                    Djibouti
                                </option>
                                                            <option value="DM">
                                    Dominica
                                </option>
                                                            <option value="DO">
                                    Dominican Republic
                                </option>
                                                            <option value="EC">
                                    Ecuador
                                </option>
                                                            <option value="EG">
                                    Egypt
                                </option>
                                                            <option value="SV">
                                    El Salvador
                                </option>
                                                            <option value="GQ">
                                    Equatorial Guinea
                                </option>
                                                            <option value="ER">
                                    Eritrea
                                </option>
                                                            <option value="EE">
                                    Estonia
                                </option>
                                                            <option value="ET">
                                    Ethiopia
                                </option>
                                                            <option value="FK">
                                    Falkland Islands (Malvinas)
                                </option>
                                                            <option value="FO">
                                    Faroe Islands
                                </option>
                                                            <option value="FJ">
                                    Fiji
                                </option>
                                                            <option value="FI">
                                    Finland
                                </option>
                                                            <option value="FR">
                                    France
                                </option>
                                                            <option value="GF">
                                    French Guiana
                                </option>
                                                            <option value="PF">
                                    French Polynesia
                                </option>
                                                            <option value="TF">
                                    French Southern Territories
                                </option>
                                                            <option value="GA">
                                    Gabon
                                </option>
                                                            <option value="GM">
                                    Gambia
                                </option>
                                                            <option value="GE">
                                    Georgia
                                </option>
                                                            <option value="DE">
                                    Germany
                                </option>
                                                            <option value="GH">
                                    Ghana
                                </option>
                                                            <option value="GI">
                                    Gibraltar
                                </option>
                                                            <option value="GR">
                                    Greece
                                </option>
                                                            <option value="GL">
                                    Greenland
                                </option>
                                                            <option value="GD">
                                    Grenada
                                </option>
                                                            <option value="GP">
                                    Guadeloupe
                                </option>
                                                            <option value="GU">
                                    Guam
                                </option>
                                                            <option value="GT">
                                    Guatemala
                                </option>
                                                            <option value="GG">
                                    Guernsey
                                </option>
                                                            <option value="GN">
                                    Guinea
                                </option>
                                                            <option value="GW">
                                    Guinea-Bissau
                                </option>
                                                            <option value="GY">
                                    Guyana
                                </option>
                                                            <option value="HT">
                                    Haiti
                                </option>
                                                            <option value="HM">
                                    Heard Island & Mcdonald Islands
                                </option>
                                                            <option value="VA">
                                    Holy See (Vatican City State)
                                </option>
                                                            <option value="HN">
                                    Honduras
                                </option>
                                                            <option value="HK">
                                    Hong Kong
                                </option>
                                                            <option value="HU">
                                    Hungary
                                </option>
                                                            <option value="IS">
                                    Iceland
                                </option>
                                                            <option value="IN">
                                    India
                                </option>
                                                            <option value="ID">
                                    Indonesia
                                </option>
                                                            <option value="IR">
                                    Iran, Islamic Republic Of
                                </option>
                                                            <option value="IQ">
                                    Iraq
                                </option>
                                                            <option value="IE">
                                    Ireland
                                </option>
                                                            <option value="IM">
                                    Isle Of Man
                                </option>
                                                            <option value="IL">
                                    Israel
                                </option>
                                                            <option value="IT">
                                    Italy
                                </option>
                                                            <option value="JM">
                                    Jamaica
                                </option>
                                                            <option value="JP">
                                    Japan
                                </option>
                                                            <option value="JE">
                                    Jersey
                                </option>
                                                            <option value="JO">
                                    Jordan
                                </option>
                                                            <option value="KZ">
                                    Kazakhstan
                                </option>
                                                            <option value="KE">
                                    Kenya
                                </option>
                                                            <option value="KI">
                                    Kiribati
                                </option>
                                                            <option value="KR">
                                    Korea
                                </option>
                                                            <option value="KW">
                                    Kuwait
                                </option>
                                                            <option value="KG">
                                    Kyrgyzstan
                                </option>
                                                            <option value="LA">
                                    Lao People's Democratic Republic
                                </option>
                                                            <option value="LV">
                                    Latvia
                                </option>
                                                            <option value="LB">
                                    Lebanon
                                </option>
                                                            <option value="LS">
                                    Lesotho
                                </option>
                                                            <option value="LR">
                                    Liberia
                                </option>
                                                            <option value="LY">
                                    Libyan Arab Jamahiriya
                                </option>
                                                            <option value="LI">
                                    Liechtenstein
                                </option>
                                                            <option value="LT">
                                    Lithuania
                                </option>
                                                            <option value="LU">
                                    Luxembourg
                                </option>
                                                            <option value="MO">
                                    Macao
                                </option>
                                                            <option value="MK">
                                    Macedonia
                                </option>
                                                            <option value="MG">
                                    Madagascar
                                </option>
                                                            <option value="MW">
                                    Malawi
                                </option>
                                                            <option value="MY">
                                    Malaysia
                                </option>
                                                            <option value="MV">
                                    Maldives
                                </option>
                                                            <option value="ML">
                                    Mali
                                </option>
                                                            <option value="MT">
                                    Malta
                                </option>
                                                            <option value="MH">
                                    Marshall Islands
                                </option>
                                                            <option value="MQ">
                                    Martinique
                                </option>
                                                            <option value="MR">
                                    Mauritania
                                </option>
                                                            <option value="MU">
                                    Mauritius
                                </option>
                                                            <option value="YT">
                                    Mayotte
                                </option>
                                                            <option value="MX">
                                    Mexico
                                </option>
                                                            <option value="FM">
                                    Micronesia, Federated States Of
                                </option>
                                                            <option value="MD">
                                    Moldova
                                </option>
                                                            <option value="MC">
                                    Monaco
                                </option>
                                                            <option value="MN">
                                    Mongolia
                                </option>
                                                            <option value="ME">
                                    Montenegro
                                </option>
                                                            <option value="MS">
                                    Montserrat
                                </option>
                                                            <option value="MA">
                                    Morocco
                                </option>
                                                            <option value="MZ">
                                    Mozambique
                                </option>
                                                            <option value="MM">
                                    Myanmar
                                </option>
                                                            <option value="NA">
                                    Namibia
                                </option>
                                                            <option value="NR">
                                    Nauru
                                </option>
                                                            <option value="NP">
                                    Nepal
                                </option>
                                                            <option value="NL">
                                    Netherlands
                                </option>
                                                            <option value="AN">
                                    Netherlands Antilles
                                </option>
                                                            <option value="NC">
                                    New Caledonia
                                </option>
                                                            <option value="NZ">
                                    New Zealand
                                </option>
                                                            <option value="NI">
                                    Nicaragua
                                </option>
                                                            <option value="NE">
                                    Niger
                                </option>
                                                            <option value="NG">
                                    Nigeria
                                </option>
                                                            <option value="NU">
                                    Niue
                                </option>
                                                            <option value="NF">
                                    Norfolk Island
                                </option>
                                                            <option value="MP">
                                    Northern Mariana Islands
                                </option>
                                                            <option value="NO">
                                    Norway
                                </option>
                                                            <option value="OM">
                                    Oman
                                </option>
                                                            <option value="PK">
                                    Pakistan
                                </option>
                                                            <option value="PW">
                                    Palau
                                </option>
                                                            <option value="PS">
                                    Palestine, State of
                                </option>
                                                            <option value="PA">
                                    Panama
                                </option>
                                                            <option value="PG">
                                    Papua New Guinea
                                </option>
                                                            <option value="PY">
                                    Paraguay
                                </option>
                                                            <option value="PE">
                                    Peru
                                </option>
                                                            <option value="PH">
                                    Philippines
                                </option>
                                                            <option value="PN">
                                    Pitcairn
                                </option>
                                                            <option value="PL">
                                    Poland
                                </option>
                                                            <option value="PT">
                                    Portugal
                                </option>
                                                            <option value="PR">
                                    Puerto Rico
                                </option>
                                                            <option value="QA">
                                    Qatar
                                </option>
                                                            <option value="RE">
                                    Reunion
                                </option>
                                                            <option value="RO">
                                    Romania
                                </option>
                                                            <option value="RU">
                                    Russian Federation
                                </option>
                                                            <option value="RW">
                                    Rwanda
                                </option>
                                                            <option value="BL">
                                    Saint Barthelemy
                                </option>
                                                            <option value="SH">
                                    Saint Helena
                                </option>
                                                            <option value="KN">
                                    Saint Kitts And Nevis
                                </option>
                                                            <option value="LC">
                                    Saint Lucia
                                </option>
                                                            <option value="MF">
                                    Saint Martin
                                </option>
                                                            <option value="PM">
                                    Saint Pierre And Miquelon
                                </option>
                                                            <option value="VC">
                                    Saint Vincent And Grenadines
                                </option>
                                                            <option value="WS">
                                    Samoa
                                </option>
                                                            <option value="SM">
                                    San Marino
                                </option>
                                                            <option value="ST">
                                    Sao Tome And Principe
                                </option>
                                                            <option value="SA">
                                    Saudi Arabia
                                </option>
                                                            <option value="SN">
                                    Senegal
                                </option>
                                                            <option value="RS">
                                    Serbia
                                </option>
                                                            <option value="SC">
                                    Seychelles
                                </option>
                                                            <option value="SL">
                                    Sierra Leone
                                </option>
                                                            <option value="SG">
                                    Singapore
                                </option>
                                                            <option value="SK">
                                    Slovakia
                                </option>
                                                            <option value="SI">
                                    Slovenia
                                </option>
                                                            <option value="SB">
                                    Solomon Islands
                                </option>
                                                            <option value="SO">
                                    Somalia
                                </option>
                                                            <option value="ZA">
                                    South Africa
                                </option>
                                                            <option value="GS">
                                    South Georgia And Sandwich Isl.
                                </option>
                                                            <option value="ES">
                                    Spain
                                </option>
                                                            <option value="LK">
                                    Sri Lanka
                                </option>
                                                            <option value="SD">
                                    Sudan
                                </option>
                                                            <option value="SR">
                                    Suriname
                                </option>
                                                            <option value="SJ">
                                    Svalbard And Jan Mayen
                                </option>
                                                            <option value="SZ">
                                    Swaziland
                                </option>
                                                            <option value="SE">
                                    Sweden
                                </option>
                                                            <option value="CH">
                                    Switzerland
                                </option>
                                                            <option value="SY">
                                    Syrian Arab Republic
                                </option>
                                                            <option value="TW">
                                    Taiwan
                                </option>
                                                            <option value="TJ">
                                    Tajikistan
                                </option>
                                                            <option value="TZ">
                                    Tanzania
                                </option>
                                                            <option value="TH">
                                    Thailand
                                </option>
                                                            <option value="TL">
                                    Timor-Leste
                                </option>
                                                            <option value="TG">
                                    Togo
                                </option>
                                                            <option value="TK">
                                    Tokelau
                                </option>
                                                            <option value="TO">
                                    Tonga
                                </option>
                                                            <option value="TT">
                                    Trinidad And Tobago
                                </option>
                                                            <option value="TN">
                                    Tunisia
                                </option>
                                                            <option value="TR">
                                    Turkey
                                </option>
                                                            <option value="TM">
                                    Turkmenistan
                                </option>
                                                            <option value="TC">
                                    Turks And Caicos Islands
                                </option>
                                                            <option value="TV">
                                    Tuvalu
                                </option>
                                                            <option value="UG">
                                    Uganda
                                </option>
                                                            <option value="UA">
                                    Ukraine
                                </option>
                                                            <option value="AE">
                                    United Arab Emirates
                                </option>
                                                            <option value="GB">
                                    United Kingdom
                                </option>
                                                            <option value="US" selected="selected">
                                    United States
                                </option>
                                                            <option value="UM">
                                    United States Outlying Islands
                                </option>
                                                            <option value="UY">
                                    Uruguay
                                </option>
                                                            <option value="UZ">
                                    Uzbekistan
                                </option>
                                                            <option value="VU">
                                    Vanuatu
                                </option>
                                                            <option value="VE">
                                    Venezuela
                                </option>
                                                            <option value="VN">
                                    Viet Nam
                                </option>
                                                            <option value="VG">
                                    Virgin Islands, British
                                </option>
                                                            <option value="VI">
                                    Virgin Islands, U.S.
                                </option>
                                                            <option value="WF">
                                    Wallis And Futuna
                                </option>
                                                            <option value="EH">
                                    Western Sahara
                                </option>
                                                            <option value="YE">
                                    Yemen
                                </option>
                                                            <option value="ZM">
                                    Zambia
                                </option>
                                                            <option value="ZW">
                                    Zimbabwe
                                </option>
                                                    </select>
                    </div>
                </div>
            </div>
                    <div id="containerNewUserSecurity" >

            <div class="sub-heading">
                <span>Account Security</span>
            </div>
            <div id="containerPassword" class="row">
                <div id="passwdFeedback" style="display: none;" class="alert alert-info text-center col-sm-12"></div>
                <div class="col-sm-6">
                    <div class="form-group prepend-icon">
                        <label for="inputNewPassword1" class="field-icon">
                            <i class="fa fa-lock"></i>
                        </label>
                        <input type="password" name="password" id="inputNewPassword1" data-error-threshold="50" data-warning-threshold="75" class="field" placeholder="Password" autocomplete="off">
                    </div>
                </div>
                <div class="col-sm-6">
                    <div class="form-group prepend-icon">
                        <label for="inputNewPassword2" class="field-icon">
                            <i class="fa fa-lock"></i>
                        </label>
                        <input type="password" name="password2" id="inputNewPassword2" class="field" placeholder="Confirm Password" autocomplete="off">
                    </div>
                </div>
                <div class="col-sm-6">
                    <div class="progress">
                        <div class="progress-bar progress-bar-success progress-bar-striped" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" id="passwordStrengthMeterBar">
                        </div>
                    </div>
                </div>
                <div class="col-sm-6">
                    <p class="text-center small text-muted" id="passwordStrengthTextLabel">Password Strength: Enter a Password</p>
                </div>
            </div>
                    </div>

                    <div class="marketing-email-optin">
                <h4>Join our mailing list</h4>
                <p>We would like to send you occasional news, information and special offers by email. To join our mailing list, simply tick the box below. You can unsubscribe at any time.</p>
                <input type="checkbox" name="marketingoptin" value="1" checked class="no-icheck toggle-switch-success" data-size="small" data-on-text="Yes" data-off-text="No">
            </div>
        
            <div class="row">
        
                    <div class="col-md-8 col-md-offset-2 col-xs-10 col-xs-offset-1">
                <div id="default-captcha-domainchecker" class="text-center">
                    <p>Please enter the characters you see in the image below into the text box provided. This is required to prevent automated submissions.</p>

                    <div class="col-xs-6 captchaimage">
                        <img id="inputCaptchaImage" src="includes/verifyimage.php" align="middle" />
                    </div>

                    <div class="col-xs-6">
                        <input id="inputCaptcha" type="text" name="code" maxlength="5" class="form-control pull-left" />
                    </div>
                </div>
            </div>
        
            </div>


        <br/>
                <p align="center">
            <input class="btn btn-large btn-primary" type="submit" value="Register"/>
        </p>
    </form>
</div>

<p style="text-align:center;">Powered by <a href="https://www.whmcs.com/" target="_blank">WHMCompleteSolution</a></p>


                </div><!-- /.main-content -->
                            <div class="clearfix"></div>
        </div>
    </div>
</section>

<section id="footer">
    <div class="container">
        <a href="#" class="back-to-top"><i class="fa fa-chevron-up"></i></a>
        <p>Copyright &copy; 2018 H-Desk Pro LLC. All Rights Reserved.</p>
    </div>
</section>

<div class="modal system-modal fade" id="modalAjax" tabindex="-1" role="dialog" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content panel panel-primary">
            <div class="modal-header panel-heading">
                <button type="button" class="close" data-dismiss="modal">
                    <span aria-hidden="true">&times;</span>
                    <span class="sr-only">Close</span>
                </button>
                <h4 class="modal-title">Title</h4>
            </div>
            <div class="modal-body panel-body">
                Loading...
            </div>
            <div class="modal-footer panel-footer">
                <div class="pull-left loader">
                    <i class="fa fa-circle-o-notch fa-spin"></i> Loading...
                </div>
                <button type="button" class="btn btn-default" data-dismiss="modal">
                    Close
                </button>
                <button type="button" class="btn btn-primary modal-submit">
                    Submit
                </button>
            </div>
        </div>
    </div>
</div>



</body>
</html>

 

 

 

Link to comment
Share on other sites

12 minutes ago, brian! said:

this community is full of working hooks! :768_mag_right:

:957_heavy_check_mark:

Thanks @brian! 

As I was explaining to @redit above, the example in the documentation falls short of completing a fully working hook for WHMCS, and I need to understand this going forward. The immediate need at the moment is to allow customer registration through the website. Please see the code above, which if not for the fact that tokens are not being exchanged with WHMCS, actually works. 

Kind thanks! 

Link to comment
Share on other sites

4 hours ago, Kian said:

Are you trying to register a customer on WHMCS from another website? If so you don't need an action hook but AddClient API command.

Hello @Kian,

Actually, WHMCS is hosted on a subdomain of the main domain on the same server. 

Best 

Link to comment
Share on other sites

Okay so if you want to register clients on WHMCS from a different domain/subdomain*, the Example Request (CURL) published on AddClient page is exactly what you need.

Your HTML form must post all the required parameters (firstname, lastname...) to a PHP script that forwards the request to WHMCS via curl().

*It would be possible to use localAPI() instead of curl() even on different domains but that's another story.

Link to comment
Share on other sites

Hello @Kian,

Thanks, and I'll have a look and give you some feeback. In the meantime here is some code for a form that works all except for the fact that it is not exchanging tokens with whmcs. Please have a look and let me know your thoughts if you would. 

Cheers

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Register - H-Desk Pro LLC</title>

    <!-- Styling -->
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,400,600|Raleway:400,700" rel="stylesheet">
<link href="https://subscriptions.h-desk.pro/cs/templates/six/css/all.min.css?v=cff37f" rel="stylesheet">
<link href="https://subscriptions.h-desk.pro/cs/templates/six/css/custom.css" rel="stylesheet">

<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
  <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
  <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->

<script type="text/javascript">
    var csrfToken = 'ed183b9e40c1f385dd230797a9f889ca469e5dcb',
        markdownGuide = 'Markdown Guide',
        locale = 'en',
        saved = 'saved',
        saving = 'autosaving',
        whmcsBaseUrl = "https://subscriptions.h-desk.pro/cs/";
</script>
<script src="https://subscriptions.h-desk.pro/cs/templates/six/js/scripts.min.js?v=cff37f"></script>


</head>
               
                <ul class="nav navbar-nav navbar-right">

                        <li menuItemName="Account" class="dropdown" id="Secondary_Navbar-Account">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#">
                        
                        &nbsp;<b class="caret"></b>        </a>
                    <ul class="dropdown-menu">
                            <li menuItemName="Login" id="Secondary_Navbar-Account-Login">
                    <a href="https://subscriptions.h-desk.pro/cs/clientarea.php">
                                                Login
                                            </a>
                </li>
                            <li menuItemName="Register" id="Secondary_Navbar-Account-Register">
                    <a href="https://subscriptions.h-desk.pro/cs/register.php">
                                                Register
                                            </a>
                </li>
                            <li menuItemName="Divider" class="nav-divider" id="Secondary_Navbar-Account-Divider">
                    <a href="">
                                                -----
                                            </a>
                </li>
                            <li menuItemName="Forgot Password?" id="Secondary_Navbar-Account-Forgot_Password?">
                    <a href="https://subscriptions.h-desk.pro/cs/pwreset.php">
                                                Forgot Password?
                                            </a>
                </li>
                        </ul>
            </li>


                </ul>

            </div><!-- /.navbar-collapse -->
        </div>
    </nav>

</section>




<section id="main-body">
    <div class="container">
        <div class="row">

                                    <div class="col-md-9 pull-md-right">
                    <div class="header-lined">
    <h1>Register <small>Create an account with us . . .</small></h1>
    <ol class="breadcrumb">
            <li>
            <a href="https://h-desk.pro/1/index.php">            Home
            </a>        </li>
            <li class="active">
                        Register
                    </li>
    </ol>
</div>

                </div>
                        <div class="col-md-3 pull-md-left sidebar">
                    <div menuItemName="Already Registered" class="panel panel-sidebar panel-sidebar">
        <div class="panel-heading">
            <h3 class="panel-title">
                <i class="glyphicon glyphicon-user"></i>&nbsp;                Already Registered?
                                <i class="fa fa-chevron-up panel-minimise pull-right"></i>
            </h3>
        </div>
                            <div class="list-group">
                                                            <div menuItemName="Already Registered Heading" class="list-group-item" id="Primary_Sidebar-Already_Registered-Already_Registered_Heading">
                                                                                    Already registered with us? If so, click the button below to login to our client area from where you can manage your account.
                        </div>
                                                                                <a menuItemName="Login" href="https://subscriptions.h-desk.pro/cs/login.php" class="list-group-item" id="Primary_Sidebar-Already_Registered-Login">
                                                        <i class="fa fa-user"></i>&nbsp;                            Login
                        </a>
                                                                                <a menuItemName="Lost Password Reset" href="https://subscriptions.h-desk.pro/cs/pwreset.php" class="list-group-item" id="Primary_Sidebar-Already_Registered-Lost_Password_Reset">
                                                        <i class="fa fa-asterisk"></i>&nbsp;                            Lost Password Reset
                        </a>
                                                </div>
                    </div>
    
            </div>
                <!-- Container for main page display content -->
        <div class="col-md-9 pull-md-right main-content">
            


<script type="text/javascript" src="https://subscriptions.h-desk.pro/cs/assets/js/StatesDropdown.js"></script>
<script type="text/javascript" src="https://subscriptions.h-desk.pro/cs/assets/js/PasswordStrength.js"></script>
<script>
    window.langPasswordStrength = "Password Strength";
    window.langPasswordWeak = "Weak";
    window.langPasswordModerate = "Moderate";
    window.langPasswordStrong = "Strong";
    jQuery(document).ready(function()
    {
        jQuery("#inputNewPassword1").keyup(registerFormPasswordStrengthFeedback);
    });
</script>


<div id="registration">
    <form method="post" class="using-password-strength" action="https://someexample.com/register.php" role="form" name="orderfrm" id="frmCheckout">
<input type="hidden" name="token" value="03741182865dbf1e95e0ef316de9cef17c10b911" />
        <input type="hidden" name="register" value="true"/>

        <div id="containerNewUserSignup">

            

            <div class="sub-heading">
                <span>Personal Information</span>
            </div>
            <div class="row">
                <div class="col-sm-6">
                    <div class="form-group prepend-icon">
                        <label for="inputFirstName" class="field-icon">
                            <i class="fa fa-user"></i>
                        </label>
                        <input type="text" name="firstname" id="inputFirstName" class="field form-control" placeholder="First Name" value="" required autofocus>
                    </div>
                </div>
                <div class="col-sm-6">
                    <div class="form-group prepend-icon">
                        <label for="inputLastName" class="field-icon">
                            <i class="fa fa-user"></i>
                        </label>
                        <input type="text" name="lastname" id="inputLastName" class="field form-control" placeholder="Last Name" value="" required>
                    </div>
                </div>
                <div class="col-sm-6">
                    <div class="form-group prepend-icon">
                        <label for="inputEmail" class="field-icon">
                            <i class="fa fa-envelope"></i>
                        </label>
                        <input type="email" name="email" id="inputEmail" class="field form-control" placeholder="Email Address" value="">
                    </div>
                </div>
                <div class="col-sm-6">
                    <div class="form-group prepend-icon">
                        <label for="inputPhone" class="field-icon">
                            <i class="fa fa-phone"></i>
                        </label>
                        <input type="tel" name="phonenumber" id="inputPhone" class="field" placeholder="Phone Number" value="">
                    </div>
                </div>
            </div>

            <div class="sub-heading">
                <span>Billing Address</span>
            </div>

            <div class="row">
                <div class="col-sm-12">
                    <div class="form-group prepend-icon">
                        <label for="inputCompanyName" class="field-icon">
                            <i class="fa fa-building"></i>
                        </label>
                        <input type="text" name="companyname" id="inputCompanyName" class="field" placeholder="Company Name (Optional)" value="">
                    </div>
                </div>
                <div class="col-sm-12">
                    <div class="form-group prepend-icon">
                        <label for="inputAddress1" class="field-icon">
                            <i class="fa fa-building-o"></i>
                        </label>
                        <input type="text" name="address1" id="inputAddress1" class="field form-control" placeholder="Street Address" value=""  required>
                    </div>
                </div>
                <div class="col-sm-12">
                    <div class="form-group prepend-icon">
                        <label for="inputAddress2" class="field-icon">
                            <i class="fa fa-map-marker"></i>
                        </label>
                        <input type="text" name="address2" id="inputAddress2" class="field" placeholder="Street Address 2" value="">
                    </div>
                </div>
                <div class="col-sm-4">
                    <div class="form-group prepend-icon">
                        <label for="inputCity" class="field-icon">
                            <i class="fa fa-building-o"></i>
                        </label>
                        <input type="text" name="city" id="inputCity" class="field form-control" placeholder="City" value=""  required>
                    </div>
                </div>
                <div class="col-sm-5">
                    <div class="form-group prepend-icon">
                        <label for="state" class="field-icon" id="inputStateIcon">
                            <i class="fa fa-map-signs"></i>
                        </label>
                        <label for="stateinput" class="field-icon" id="inputStateIcon">
                            <i class="fa fa-map-signs"></i>
                        </label>
                        <input type="text" name="state" id="state" class="field form-control" placeholder="State" value=""  required>
                    </div>
                </div>
                <div class="col-sm-3">
                    <div class="form-group prepend-icon">
                        <label for="inputPostcode" class="field-icon">
                            <i class="fa fa-certificate"></i>
                        </label>
                        <input type="text" name="postcode" id="inputPostcode" class="field form-control" placeholder="Postcode" value="" required>
                    </div>
                </div>
                <div class="col-sm-12">
                    <div class="form-group prepend-icon">
                        <label for="inputCountry" class="field-icon" id="inputCountryIcon">
                            <i class="fa fa-globe"></i>
                        </label>
                        <select name="country" id="inputCountry" class="field form-control">
                                                            
                                                            <option value="AU">
                                    Australia
                                </option>
                                                           
                                                            <option value="IO">
                                    British Indian Ocean Territory
                                </option>
                                   
                                                            <option value="CA">
                                    Canada
                                </option>
                                                            <option value="CV">
                                    Cape Verde
                                </option>
                                                            <option value="KY">
                                    Cayman Islands
                                </option>
                                    
                                                            <option value="GH">
                                    Ghana
                                </option>
                                                            <option value="GI">
                                    Gibraltar
                                </option>
                                   
                                                            <option value="GD">
                                    Grenada
                                </option>
                                                           <option value="GU">
                                    Guam
                                </option>
                                                           
                                                            <option value="GG">
                                    Guernsey
                                </option>                                                            
                                                            
                                                            <option value="HK">
                                    Hong Kong
                                </option>
                                                            
                                                            <option value="IM">
                                    Isle Of Man
                                </option>
                                                            <option value="IL">
                                    Israel
                                </option>
                                                           
                                                            <option value="JE">
                                    Jersey
                                </option>
                                                            <option value="LB">
                                    Lebanon
                                </option>
                                                            
                                                            <option value="MH">
                                    Marshall Islands
                                </option>
                                                            <option value="MQ">
                                    Martinique
                                </option>
                                                            
                                    Mauritius
                                </option>
                                                           
                                                            <option value="NL">
                                    Netherlands
                                </option>
                                                            
                                                            <option value="NZ">
                                    New Zealand
                                </option>
                                                            
                                                            <option value="NG">
                                    Nigeria
                                </option>
                                                            
                                                            <option value="NF">
                                    Norfolk Island
                                </option>
                                                            <option value="MP">
                                    Northern Mariana Islands
                                </option>
                                                            <option value="NO">
                                    Norway
                                </option>
                                                           
                                                            <option value="PH">
                                    Philippines
                                </option>
                                                            
                                                            <option value="SC">
                                    Seychelles
                                </option>
                                                            
                                                            <option value="SG">
                                    Singapore
                                </option>
                                                           
                                                            <option value="SB">
                                    Solomon Islands
                                </option>
                                                            
                                                            <option value="ZA">
                                    South Africa
                                </option>
                                                            <option value="GS">
                                    South Georgia And Sandwich Isl.
                                </option>
                                                            
                                                            <option value="SZ">
                                    Swaziland
                                </option>
                                                            <option value="SE">
                                    Sweden
                                </option>
                                                            <option value="CH">
                                    Switzerland
                                </option>
                                                            
                                                            <option value="TZ">
                                    Tanzania
                                </option>
                                                            
                                                            <option value="TT">
                                    Trinidad And Tobago
                                </option>
                                                            <option value="TN">
                                    Tunisia
                                </option>
                                                            
                                                            <option value="UG">
                                    Uganda
                                </option>
                                                            
                                                            <option value="AE">
                                    United Arab Emirates
                                </option>
                                                            <option value="GB">
                                    United Kingdom
                                </option>
                                                            <option value="US" selected="selected">
                                    United States
                                </option>
                                                            <option value="UM">
                                    United States Outlying Islands
                                </option>
                                                            <
                                                            <option value="VN">
                                    Viet Nam
                                </option>
                                                            <option value="VG">
                                    Virgin Islands, British
                                </option>
                                                            <option value="VI">
                                    Virgin Islands, U.S.
                                </option>
                                                            
                                                            <option value="ZW">
                                    Zimbabwe
                                </option>
                                                    </select>
                    </div>
                </div>
            </div>
                    <div id="containerNewUserSecurity" >

            <div class="sub-heading">
                <span>Account Security</span>
            </div>
            <div id="containerPassword" class="row">
                <div id="passwdFeedback" style="display: none;" class="alert alert-info text-center col-sm-12"></div>
                <div class="col-sm-6">
                    <div class="form-group prepend-icon">
                        <label for="inputNewPassword1" class="field-icon">
                            <i class="fa fa-lock"></i>
                        </label>
                        <input type="password" name="password" id="inputNewPassword1" data-error-threshold="50" data-warning-threshold="75" class="field" placeholder="Password" autocomplete="off">
                    </div>
                </div>
                <div class="col-sm-6">
                    <div class="form-group prepend-icon">
                        <label for="inputNewPassword2" class="field-icon">
                            <i class="fa fa-lock"></i>
                        </label>
                        <input type="password" name="password2" id="inputNewPassword2" class="field" placeholder="Confirm Password" autocomplete="off">
                    </div>
                </div>
                <div class="col-sm-6">
                    <div class="progress">
                        <div class="progress-bar progress-bar-success progress-bar-striped" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" id="passwordStrengthMeterBar">
                        </div>
                    </div>
                </div>
                <div class="col-sm-6">
                    <p class="text-center small text-muted" id="passwordStrengthTextLabel">Password Strength: Enter a Password</p>
                </div>
            </div>
                    </div>

                    <div class="marketing-email-optin">
                <h4>Join our mailing list</h4>
                <p>We would like to send you occasional news, information and special offers by email. To join our mailing list, simply tick the box below. You can unsubscribe at any time.</p>
                <input type="checkbox" name="marketingoptin" value="1" checked class="no-icheck toggle-switch-success" data-size="small" data-on-text="Yes" data-off-text="No">
            </div>
        
            <div class="row">
        
                    <div class="col-md-8 col-md-offset-2 col-xs-10 col-xs-offset-1">
                <div id="default-captcha-domainchecker" class="text-center">
                    <p>Please enter the characters you see in the image below into the text box provided. This is required to prevent automated submissions.</p>

                    <div class="col-xs-6 captchaimage">
                        <img id="inputCaptchaImage" src="https://some/includes/verifyimage.php" align="middle" />
                    </div>

                    <div class="col-xs-6">
                        <input id="inputCaptcha" type="text" name="code" maxlength="5" class="form-control pull-left" />
                    </div>
                </div>
            </div>
        
            </div>


        <br/>
                <p align="center">
            <input class="btn btn-large btn-primary" type="submit" value="Register"/>
        </p>
    </form>
</div>

<p style="text-align:center;">Powered by <a href="https://www.whmcs.com/" target="_blank">WHMCompleteSolution</a></p>


                </div><!-- /.main-content -->
                            <div class="clearfix"></div>
        </div>
    </div>
</section>

<section id="footer">
    <div class="container">
        <a href="#" class="back-to-top"><i class="fa fa-chevron-up"></i></a>
        <p>Copyright &copy; 2018 H-Desk Pro LLC. All Rights Reserved.</p>
    </div>
</section>

<div class="modal system-modal fade" id="modalAjax" tabindex="-1" role="dialog" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content panel panel-primary">
            <div class="modal-header panel-heading">
                <button type="button" class="close" data-dismiss="modal">
                    <span aria-hidden="true">&times;</span>
                    <span class="sr-only">Close</span>
                </button>
                <h4 class="modal-title">Title</h4>
            </div>
            <div class="modal-body panel-body">
                Loading...
            </div>
            <div class="modal-footer panel-footer">
                <div class="pull-left loader">
                    <i class="fa fa-circle-o-notch fa-spin"></i> Loading...
                </div>
                <button type="button" class="btn btn-default" data-dismiss="modal">
                    Close
                </button>
                <button type="button" class="btn btn-primary modal-submit">
                    Submit
                </button>
            </div>
        </div>
    </div>
</div>



</body>
</html>

 

Link to comment
Share on other sites

On 7/21/2018 at 6:52 PM, Kian said:

Okay so if you want to register clients on WHMCS from a different domain/subdomain*, the Example Request (CURL) published on AddClient page is exactly what you need.

Ok, so except for the keys, would the code look like this?

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://h-desk.pro/cs/includes/api.php');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,
    http_build_query(
        array(
            'action' => 'AddClient',
            // See https://developers.whmcs.com/api/authentication
            'username' => 'IDENTIFIER_OR_ADMIN_USERNAME',
            'password' => 'SECRET_OR_HASHED_PASSWORD',
            'firstname' => $firstname,
            'lastname' => $lastname,
            'email' => '$email,
            'address1' => $address1,
            'city' => $city,
            'state' => $state,
            'postcode' => $postcode,
            'country' => $country,
            'phonenumber' => $phonenumber,
            'password2' => $password2,
            'clientip' => $clientip,
            'responsetype' => 'json',
        )
    )
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);

 

Link to comment
Share on other sites

Hello, 

So the form to go with this is as: 

<form method="post" action="https://subscriptions.h-desk.pro/cs/includes/hooks/myclientadd.php"> 

	<input type="text" name="firstname" placeholder="First name" size="20"></p>
	<input type="text" name="lastname" placeholder="Last name" size="20"></p>
	<input type="text" name="email" placeholder="email address" size="20"> </p>
	<input type="text" name="address1" placeholder="address" size="25"> </p>
	<input type="text" name="city" placeholder="city" size="15"> </p>
	<input type="text" name="state" placeholder="state" size="15"></p>
	<input type="text" name="postcode" placeholder="zip or postal code" size="15"></p>
	<input type="text" name="country" placeholder="country" size="25"> </p>
	<input type="text" name="phonenumber" placeholder="phone number" size="12"></p>
	<input type="text" name="password2" placeholder="password" size="15"></p>
	
	<input type="hidden" name="firstname" value="<?php $_POST[firstname]; ?>"
	<input type="hidden" name="lastname" value="<?php $_POST[lastname]; ?>"
	<input type="hidden" name="email" value="<?php $_POST[email]; ?>"
	<input type="hidden" name="address1" value="<?php $_POST[address]; ?>"
	<input type="hidden" name="city" value="<?php $_POST[city]; ?>"
	<input type="hidden" name="state" value="<?php $_POST[state]; ?>"
	<input type="hidden" name="postcode" value="<?php $_POST[postcode]; ?>"
	<input type="hidden" name="country" value="<?php $_POST[country]; ?>"
	<input type="hidden" name="phonenumber" value="<?php $_POST[phonenumber]; ?>"
	<input type="hidden" name="password2" value="<?php $_POST[clientip]; ?>"
	<input type="hidden" name="clientip" value="<?php $_POST[clientip]; ?>"</p>
	
	<input type="submit" value="Submit">
	</form>
	

And the response is:

$ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'https://h-desk.pro/cs/includes/api.php'); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query( array( 'action' => 'AddClient', // See https://developers.whmcs.com/api/authentication 'username' => '5uM7VqxuFCaIdazDd4bZ5VyivjcI2i36', 'password' => '9s4pNshx5PVRuJrfJpLIuzPUSMtChr6n', 'firstname' => $firstname, 'lastname' => $lastname, 'email' => '$email, 'address1' => $address1, 'city' => $city, 'state' => $state, 'postcode' => $postcode, 'country' => $country, 'phonenumber' => $phonenumber, 'password2' => $password2, 'clientip' => $clientip, 'responsetype' => 'json', ) ) ); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $response = curl_exec($ch); curl_close($ch);

What went wrong here?  Please note that the API keys are inserted where they are supposed to be. However, it is probably not in the right location as it was placed in includes/hooks. I don't think that would impact it though provided it is written correctly. 

Kind thanks

Link to comment
Share on other sites

You are mixing up API and hooks. You don't need hooks at all to achieve your goal. Create a PHP named for example abc.php with this content:

<?php

$url            = 'http://example.com'; // URL to the root of your WHMCS. Do NOT use trailing slash '/'
$api_identifier = 'Z7hMGRgmSoF1C0yqN7hUrS5gBS7ZsFb0'; // Your API Identifier. Read https://docs.whmcs.com/API_Authentication_Credentials
$api_secret     = 'TWD6MV9S0Ok8Tu41JPIxtCjnZLIsUswv'; // Your API Secret. Read https://docs.whmcs.com/API_Authentication_Credentials

$ch = curl_init ();
curl_setopt ($ch, CURLOPT_URL, $url . '/includes/api.php');
curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt ($ch, CURLOPT_POSTFIELDS, http_build_query(array(
		'identifier' => $api_identifier,
		'secret' => $api_secret,
		'action' => 'AddClient',
		'firstname' => $_POST['firstname'],
		'lastname' => $_POST['lastname'],
		'email' => $_POST['email'],
		'address1' => $_POST['address1'],
		'city' => $_POST['ciry'],
		'state' => $_POST['state'],
		'postcode' => $_POST['postcode'],
		'country' => $_POST['country'],
		'phonenumber' => $_POST['phonenumber'],
		'password2' => $_POST['password'],
		'responsetype' => 'json'
)));
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close ($ch);

Your form action must be like follows:

<form method="post" action="abc.php"> 

That's it.

Link to comment
Share on other sites

Anyway the content of your form is weird. First off there are a lot of </p> tags that make no sense. The second issue is that you are nullifyng user submission with your input structure. You are sending all parameters twice.

<input type="text" name="firstname" placeholder="First name" size="20">
<input type="hidden" name="firstname" value="<?php $_POST[firstname]; ?>"

For example in this part of code you are sending firstname two times. When your visitor sumbits this form the firstname he wrote in the first input field will be overwritten by the hidden one. Long story short all parameters (firstname, lastname, country...) will always be empty. What's the point of a form that always sends empty values the first time it is submitted?

Edited by Kian
Link to comment
Share on other sites

1 hour ago, Kian said:

You are mixing up API and hooks. You don't need hooks at all to achieve your goal. Create a PHP named for example abc.php with this content:

Thanks for your feedback, Kian!

Yes, I am still trying to wrap my head around this. You are correct. A  few working examples to get up to speed here with WHMCS certainly helps though. 

Kind thanks! 

Link to comment
Share on other sites

1 hour ago, Kian said:

Anyway the content of your form is weird. First off there are a lot of </p> tags that make no sense. The second issue is that you are nullifyng user submission with your input structure. You are sending all parameters twice.

Seems that way, doesn't it? But, if you don't use the </p> tags fields display horizontally instead of vertically, and the Submit button doesn't show. 

Best

DanSK

Link to comment
Share on other sites

You can simply use this:

<form method="post" action="abc.php"> <!-- IMPORTANT! Replace abc.php with your script path/name -->
    <p><input type="text" name="firstname" placeholder="First name" size="20" value="<?php $_POST[firstname]; ?>"></p>
    <p><input type="text" name="lastname" placeholder="Last name" size="20" value="<?php $_POST[lastname]; ?>"></p>
    <p><input type="text" name="email" placeholder="email address" size="20" value="<?php $_POST[email]; ?>"></p>
    <p><input type="text" name="address1" placeholder="address" size="25" value="<?php $_POST[address]; ?>"></p>
    <p><input type="text" name="city" placeholder="city" size="15" value="<?php $_POST[city]; ?>"></p>
    <p><input type="text" name="state" placeholder="state" size="15" value="<?php $_POST[state]; ?>"></p>
    <p><input type="text" name="postcode" placeholder="zip or postal code" size="15" value="<?php $_POST[postcode]; ?>"></p>
    <p><input type="text" name="country" placeholder="country" size="25" value="<?php $_POST[country]; ?>"></p>
    <p><input type="text" name="phonenumber" placeholder="phone number" size="12" value="<?php $_POST[phonenumber]; ?>"></p>
    <p><input type="text" name="password2" placeholder="password" size="15" value="<?php $_POST[clientip]; ?>"></p>
    <p><input type="submit" value="Submit"></p>
</form>

The problem with </p> tags was that you forgot to open them (<p> and </p>). Moreover there's no need to use hidden fileds.

Link to comment
Share on other sites

On 7/24/2018 at 5:04 AM, Kian said:

You can simply use this:

The problem with </p> tags was that you forgot to open them (<p> and </p>). Moreover there's no need to use hidden fileds.

Hi Kian, many thanks. Except for the <p> tags, this is exactly the code I tried later. However, even though the API keys are authorized for exactly this purpose, the form never posted and no response at all was generated. No errors. No response. Keep in mind though that the domain this is hosted on is example.com. and the domain whmcs resides on is subdomain.example.com. Same server. Same domain otherwise. 

I agree with you on the <p> tags. But, for whatever reason, only the closing tag is necessary. The display works as it should. 

Link to comment
Share on other sites

Ups, I fixed some typos. In order to avoid any further misunderstanding, here is the complete code I would use:

<?php

if ($_POST)
{
    $url            = 'http://example.com'; // URL to the root of your WHMCS. Do NOT use trailing slash '/'
    $api_identifier = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; // Your API Identifier
    $api_secret     = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; // Your API Secret

    $ch = curl_init ();
    curl_setopt ($ch, CURLOPT_URL, $url . '/includes/api.php');
    curl_setopt ($ch, CURLOPT_POST, 1);
    curl_setopt ($ch, CURLOPT_POSTFIELDS, http_build_query(array(
    		'identifier' => $api_identifier,
    		'secret' => $api_secret,
    		'action' => 'AddClient',
    		'firstname' => $_POST['firstname'],
    		'lastname' => $_POST['lastname'],
    		'email' => $_POST['email'],
    		'address1' => $_POST['address1'],
    		'city' => $_POST['city'],
    		'state' => $_POST['state'],
    		'postcode' => $_POST['postcode'],
    		'country' => $_POST['country'],
    		'phonenumber' => $_POST['phonenumber'],
    		'password2' => $_POST['password2'],
    		'responsetype' => 'json'
    )));
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    $response = curl_exec($ch);
    curl_close ($ch);

    echo '<pre>';
    print_r($response);
    echo '</pre>';
}

?>

<form method="post" action="a1.php">
    <p><input type="text" name="firstname" placeholder="First name" size="20" value="<?php echo $_POST['firstname']; ?>"></p>
    <p><input type="text" name="lastname" placeholder="Last name" size="20" value="<?php echo $_POST['lastname']; ?>"></p>
    <p><input type="text" name="email" placeholder="email address" size="20" value="<?php echo $_POST['email']; ?>"></p>
    <p><input type="text" name="address1" placeholder="address" size="25" value="<?php echo $_POST['address']; ?>"></p>
    <p><input type="text" name="city" placeholder="city" size="15" value="<?php echo $_POST['city']; ?>"></p>
    <p><input type="text" name="state" placeholder="state" size="15" value="<?php echo $_POST['state']; ?>"></p>
    <p><input type="text" name="postcode" placeholder="zip or postal code" size="15" value="<?php echo $_POST['postcode']; ?>"></p>
    <p><input type="text" name="country" placeholder="country" size="25" value="<?php echo $_POST['country']; ?>"></p>
    <p><input type="text" name="phonenumber" placeholder="phone number" size="12" value="<?php echo $_POST['phonenumber']; ?>"></p>
    <p><input type="text" name="password2" placeholder="password" size="15" value="<?php echo $_POST['password2']; ?>"></p>
    <p><input type="submit" value="Submit"></p>
</form>

Here is a working example that registers clients on a real WHMCS. I will remove the example in next few hours because I don't want people spamming client registrations on my demo 🙄

Keep in mind that of course the code can be improved a lot! Mine is just a basic example.

Link to comment
Share on other sites

On 7/26/2018 at 4:19 AM, Kian said:

Ups, I fixed some typos. In order to avoid any further misunderstanding, here is the complete code I would use:

Here is a working example that registers clients on a real WHMCS. I will remove the example in next few hours because I don't want people spamming client registrations on my demo 🙄

Keep in mind that of course the code can be improved a lot! Mine is just a basic example.

Hi, 

Here a working example of this code in action:Capture.thumb.PNG.8367f37a0642f43eef191bde74a71a2f.PNG

While it seemed to work better in the link you posted, it was toggling back and forth between "No address entered" and "No country entered." These fields were both entered on all occasions, but the messages persisted nonetheless. The other thing I noticed is that the password was in plain text too. 

Link to comment
Share on other sites

You have to change input types accordingly and also many other things. Here we are talking about an example. Of course the final solution must be different.

For example country field must be a select (aka dropdown) with all countries as options. Every option is a key/value pair (key = ISO 3166-1 alpha-2, value = country name) like it follows:

<select name="country">
  <option value="IT">Italy</option>
  <option value="FR">France</option>
  <option value="US">United States</option>
  <!-- and so on -->
</select>

Password field must be type = password like follows:

<input type="password" name="password2" placeholder="password" size="15" value="<?php echo $_POST['password2']; ?>">

But probably your visitors shouldn't be able to specify their own password since they could insert insecure ones. Passwords should be automatically generated by you and strong.

Phonenumber accepts only digits and probably also . and +.

1 hour ago, dansk said:

While it seemed to work better in the link you posted, it was toggling back and forth between "No address entered" and "No country entered."

For "No address entered" there was a typo. It's $_POST['address1'] and not $_POST['address']:

<p><input type="text" name="address1" placeholder="address" size="25" value="<?php echo $_POST['address1']; ?>"></p>

For "No country entered" is due to the fact that this field only accepts only ISO 3166-1 alpha-2 values (e.g. IT, FR, US, ES, DE...) like I described above. Recap:

<?php

if ($_POST)
{
    $url            = 'http://example.com'; // URL to the root of your WHMCS. Do NOT use trailing slash '/'
    $api_identifier = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; // Your API Identifier
    $api_secret     = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; // Your API Secret

    $ch = curl_init ();
    curl_setopt ($ch, CURLOPT_URL, $url . '/includes/api.php');
    curl_setopt ($ch, CURLOPT_POST, 1);
    curl_setopt ($ch, CURLOPT_POSTFIELDS, http_build_query(array(
        'identifier' => $api_identifier,
        'secret' => $api_secret,
        'action' => 'AddClient',
        'firstname' => $_POST['firstname'],
        'lastname' => $_POST['lastname'],
        'email' => $_POST['email'],
        'address1' => $_POST['address1'],
        'city' => $_POST['city'],
        'state' => $_POST['state'],
        'postcode' => $_POST['postcode'],
        'country' => $_POST['country'],
        'phonenumber' => $_POST['phonenumber'],
        'password2' => substr(str_shuffle('1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcefghijklmnopqrstuvwxyz'), 0, '8'), // Password automatically generated
        'responsetype' => 'json'
    )));
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    $response = curl_exec($ch);
    curl_close ($ch);

    echo '<pre>';
    print_r($response);
    echo '</pre>';
}

?>

<form method="post" action="a1.php">
    <p><input type="text" name="firstname" placeholder="First name" size="20" value="<?php echo $_POST['firstname']; ?>"></p>
    <p><input type="text" name="lastname" placeholder="Last name" size="20" value="<?php echo $_POST['lastname']; ?>"></p>
    <p><input type="text" name="email" placeholder="email address" size="20" value="<?php echo $_POST['email']; ?>"></p>
    <p><input type="text" name="address1" placeholder="address" size="25" value="<?php echo $_POST['address1']; ?>"></p>
    <p><input type="text" name="city" placeholder="city" size="15" value="<?php echo $_POST['city']; ?>"></p>
    <p><input type="text" name="state" placeholder="state" size="15" value="<?php echo $_POST['state']; ?>"></p>
    <p><input type="text" name="postcode" placeholder="zip or postal code" size="15" value="<?php echo $_POST['postcode']; ?>"></p>
    <p>
    	<select name="country">
    	    <option value="">Please select</option>
    	    <option value="IT">Italy</option>
    	    <option value="FR">France</option>
    	    <option value="DE">Germany</option>
    	    <!-- And so on... -->
    	</select>
    </p>
    <p><input type="text" name="phonenumber" placeholder="phone number" size="12" value="<?php echo $_POST['phonenumber']; ?>"></p>
    <p><input type="submit" value="Submit"></p>
</form>

 

Link to comment
Share on other sites

Thanks @Kian,

I'll play with this and see what I can get done with it. In the meantime, I also have a derivative of the code working that I posted above for the form. The problem is csrf tokens, and to get it to work I had to turn these off in Setup >  General Settings > Security.  It's not advisable, but it works. 

 

 

 

Link to comment
Share on other sites

And that was using: 

<form method="post" action="a1.php">
    <p><input type="text" name="firstname" placeholder="First name" size="20" value="<?php echo $_POST['firstname']; ?>"></p>
    <p><input type="text" name="lastname" placeholder="Last name" size="20" value="<?php echo $_POST['lastname']; ?>"></p>
    <p><input type="text" name="email" placeholder="email address" size="20" value="<?php echo $_POST['email']; ?>"></p>
    <p><input type="text" name="address1" placeholder="address" size="25" value="<?php echo $_POST['address1']; ?>"></p>
    <p><input type="text" name="city" placeholder="city" size="15" value="<?php echo $_POST['city']; ?>"></p>
    <p><input type="text" name="state" placeholder="state" size="15" value="<?php echo $_POST['state']; ?>"></p>
    <p><input type="text" name="postcode" placeholder="zip or postal code" size="15" value="<?php echo $_POST['postcode']; ?>"></p>
    <p>
    	<select name="country">
    	    <option value="">Please select</option>
    	    <option value="IT">Italy</option>
    	    <option value="FR">France</option>
    	    <option value="DE">Germany</option>
    	    <!-- And so on... -->
    	</select>
    </p>
    <p><input type="text" name="phonenumber" placeholder="phone number" size="12" value="<?php echo $_POST['phonenumber']; ?>"></p>
    <p><input type="submit" value="Submit"></p>
</form>

 

Link to comment
Share on other sites

  • 1 year later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use & Guidelines and understand your posts will initially be pre-moderated