<?php
 
 
    /**
 
    * Project:        Distrubution License Class
 
    * File:            example.security.php
 
    *
 
    * Copyright (C) 2005 Oliver Lillie
 
    * 
 
    * This program is free software; you can redistribute it and/or modify it 
 
    * under the terms of the GNU General Public License as published by  the Free 
 
    * Software Foundation; either version 2 of the License, or (at your option) 
 
    * any later version.
 
    *
 
    * This program is distributed in the hope that it will be useful, but 
 
    * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
 
    * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 
 
    * for more details.
 
    *
 
    * You should have received a copy of the GNU General Public License along 
 
    * with this program; if not, write to the Free Software Foundation, Inc., 
 
    * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA    
 
    *
 
    * @link http://www.buggedcom.co.uk/
 
    * @link http://www.phpclasses.org/browse/package/2298.html
 
    * @author Oliver Lillie, buggedcom <publicmail at buggedcom dot co dot uk>
 
    * @history---------------------------------------------
 
    * see CHANGELOG
 
    */
 
    
 
    # IMPORTANT, THIS DEMO USES THE license.generated.dat FILE THAT IS GENERATED
 
    # BY THE demo.generate.license.php SCRIPT. PLEASE RUN THAT FILE BEOFRE THIS
 
 
    # this file demonstrates several important security techniques
 
    # that should be employed within your app's license validation
 
    # methods
 
    
 
    # 1) -----------------------------------------------------------------------
 
    # you should always encode your applications using such a product as ionocube, 
 
    # or source guardian.
 
    
 
    # 2) -----------------------------------------------------------------------
 
    # always copy the $_SERVER vars before including any public files (by 
 
    # public i mean any files that the client has access to, ie lang files or 
 
    # opensource classes). Ideally the license validation script should be carried
 
    # out before any imporation of language files, however i know that is not 
 
    # always possible so hence this work around.
 
    $server_array = $_SERVER;
 
    
 
    # 3) -----------------------------------------------------------------------
 
    # you should always check that the classes exist, otherwise terminate the script 
 
    if(@!file_exists('../shared/class.license.lib.php') || @!is_file('../shared/class.license.lib.php')) die('Missing File > ../shared/class.license.lib.php');
 
    if(@!file_exists('class.license.app.php') || @!is_file('class.license.app.php')) die('Missing File > class.license.app.php');
 
    
 
    # import the classes
 
    include_once('../shared/class.license.lib.php');
 
    include_once('class.license.app.php');
 
    
 
    # 4) -----------------------------------------------------------------------
 
    # check to see if the classes exist
 
    if(!class_exists('padl') || !class_exists('license_application')) die('Class code missing.');
 
 
    # initialise the class
 
    $application = new license_application('license.generated.dat', false, true, true, true);
 
 
    # set the server vars
 
    $application->set_server_vars($server_array);
 
    
 
    # validate the license key
 
    $results     = $application->validate();
 
 
    # 5) -----------------------------------------------------------------------
 
    # once the validation has been carried out there should be no need to run
 
    # any other scripts. thus by running make_secure() you are wiping all the
 
    # values from the class and defining a var that terminates the script if
 
    # any important functions are called or a new instance of the class is 
 
    # redeclared or inited.
 
    # by setting the param to true you can report any violations of this to your
 
    # licensing server. Note the violations detected are only function accesses
 
    # or redeclarations of the classes, not
 
    $application->make_secure(true);
 
    
 
    # inclusion of lang file for outputing errors and other text.
 
    # you should look inside the lang file as it contains some security tests you
 
    # can run to see how make_secure function works, this must always be below
 
    # the make_secure function call, otherwise there are major security 
 
    # implications in the strength of your key
 
    include_once('demo.security.lang.php');    
 
 
    # 6) -----------------------------------------------------------------------
 
    # switch through the results of the validation. This is the main one. If you
 
    # don't check the validation results, what is the point of using this class!
 
    switch($results['RESULT'])
 
    {
 
        case 'OK' :
 
            echo $LANG['LICENSE_OK'];
 
            break;
 
        default :
 
            die($LANG['LICENSE_FAILED']);
 
    }
 
    
 
    # 5) -----------------------------------------------------------------------
 
    # this is really just a tidyup but is worth it, delete the active padl object
 
    unset($application);
 
    
 
    # this would be where you would start including public files in an optimum situation
 
    # include_once('demo.security.lang.php');
 
    
 
?>
 
 |