├── assets ├── css │ ├── style.css │ └── ajaxmask.css ├── image │ ├── logo.png │ ├── favicon.gif │ └── loading-spinner-grey.gif ├── fonts │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.ttf │ └── glyphicons-halflings-regular.woff └── js │ ├── npm.js │ ├── ajaxmask.js │ ├── custom.js │ ├── jquery.timer.js │ ├── html5shiv.min.js │ └── respond.min.js ├── verification ├── assets │ ├── css │ │ ├── style.css │ │ └── ajaxmask.css │ ├── image │ │ ├── logo.png │ │ ├── favicon.gif │ │ └── loading-spinner-grey.gif │ ├── fonts │ │ ├── glyphicons-halflings-regular.eot │ │ ├── glyphicons-halflings-regular.ttf │ │ └── glyphicons-halflings-regular.woff │ └── js │ │ ├── npm.js │ │ ├── ajaxmask.js │ │ ├── custom.js │ │ ├── jquery.timer.js │ │ ├── html5shiv.min.js │ │ └── respond.min.js ├── documentation │ ├── .DS_Store │ ├── assets │ │ ├── .DS_Store │ │ ├── css │ │ │ ├── img │ │ │ │ ├── info.png │ │ │ │ └── warning.png │ │ │ ├── doc.css │ │ │ └── documenter_style.css │ │ ├── images │ │ │ ├── .DS_Store │ │ │ ├── ss_1.png │ │ │ ├── ss_2.png │ │ │ ├── ss_3.png │ │ │ ├── ss_4.png │ │ │ ├── ss_5.png │ │ │ ├── ss_6.png │ │ │ └── image_1.png │ │ └── js │ │ │ ├── google-code-prettify │ │ │ ├── prettify.css │ │ │ └── prettify.js │ │ │ ├── jquery.scrollTo.js │ │ │ ├── script.js │ │ │ └── jquery.easing.js │ └── index.html ├── getac.php ├── register.php ├── verification.php ├── include │ ├── global.php │ ├── head.php │ └── function.php ├── messages.php ├── process_verification.php ├── log.php ├── process_register.php ├── login.php ├── index.php ├── database │ └── demo_flexcodesdk.sql ├── device.php └── user.php ├── documentation ├── .DS_Store ├── assets │ ├── .DS_Store │ ├── css │ │ ├── img │ │ │ ├── info.png │ │ │ └── warning.png │ │ ├── doc.css │ │ └── documenter_style.css │ ├── images │ │ ├── .DS_Store │ │ ├── ss_1.png │ │ ├── ss_2.png │ │ ├── ss_3.png │ │ ├── ss_4.png │ │ ├── ss_5.png │ │ ├── ss_6.png │ │ ├── ss_7.png │ │ ├── ss_8.png │ │ └── image_1.png │ └── js │ │ ├── google-code-prettify │ │ ├── prettify.css │ │ └── prettify.js │ │ ├── jquery.scrollTo.js │ │ ├── script.js │ │ └── jquery.easing.js └── index.html ├── getac.php ├── register.php ├── verification.php ├── include ├── global.php ├── head.php └── function.php ├── messages.php ├── process_verification.php ├── log.php ├── process_register.php ├── login.php ├── index.php ├── database └── demo_flexcodesdk.sql ├── device.php └── user.php /assets/css/style.css: -------------------------------------------------------------------------------- 1 | body > .container { 2 | padding: 70px 15px 0; 3 | } -------------------------------------------------------------------------------- /verification/assets/css/style.css: -------------------------------------------------------------------------------- 1 | body > .container { 2 | padding: 70px 15px 0; 3 | } -------------------------------------------------------------------------------- /assets/image/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/assets/image/logo.png -------------------------------------------------------------------------------- /documentation/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/documentation/.DS_Store -------------------------------------------------------------------------------- /assets/image/favicon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/assets/image/favicon.gif -------------------------------------------------------------------------------- /documentation/assets/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/documentation/assets/.DS_Store -------------------------------------------------------------------------------- /verification/assets/image/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/verification/assets/image/logo.png -------------------------------------------------------------------------------- /assets/image/loading-spinner-grey.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/assets/image/loading-spinner-grey.gif -------------------------------------------------------------------------------- /documentation/assets/css/img/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/documentation/assets/css/img/info.png -------------------------------------------------------------------------------- /documentation/assets/images/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/documentation/assets/images/.DS_Store -------------------------------------------------------------------------------- /documentation/assets/images/ss_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/documentation/assets/images/ss_1.png -------------------------------------------------------------------------------- /documentation/assets/images/ss_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/documentation/assets/images/ss_2.png -------------------------------------------------------------------------------- /documentation/assets/images/ss_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/documentation/assets/images/ss_3.png -------------------------------------------------------------------------------- /documentation/assets/images/ss_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/documentation/assets/images/ss_4.png -------------------------------------------------------------------------------- /documentation/assets/images/ss_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/documentation/assets/images/ss_5.png -------------------------------------------------------------------------------- /documentation/assets/images/ss_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/documentation/assets/images/ss_6.png -------------------------------------------------------------------------------- /documentation/assets/images/ss_7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/documentation/assets/images/ss_7.png -------------------------------------------------------------------------------- /documentation/assets/images/ss_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/documentation/assets/images/ss_8.png -------------------------------------------------------------------------------- /verification/assets/image/favicon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/verification/assets/image/favicon.gif -------------------------------------------------------------------------------- /verification/documentation/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/verification/documentation/.DS_Store -------------------------------------------------------------------------------- /documentation/assets/css/img/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/documentation/assets/css/img/warning.png -------------------------------------------------------------------------------- /documentation/assets/images/image_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/documentation/assets/images/image_1.png -------------------------------------------------------------------------------- /verification/documentation/assets/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/verification/documentation/assets/.DS_Store -------------------------------------------------------------------------------- /assets/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/assets/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /assets/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/assets/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /assets/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/assets/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /verification/assets/image/loading-spinner-grey.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/verification/assets/image/loading-spinner-grey.gif -------------------------------------------------------------------------------- /verification/documentation/assets/css/img/info.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/verification/documentation/assets/css/img/info.png -------------------------------------------------------------------------------- /verification/documentation/assets/images/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/verification/documentation/assets/images/.DS_Store -------------------------------------------------------------------------------- /verification/documentation/assets/images/ss_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/verification/documentation/assets/images/ss_1.png -------------------------------------------------------------------------------- /verification/documentation/assets/images/ss_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/verification/documentation/assets/images/ss_2.png -------------------------------------------------------------------------------- /verification/documentation/assets/images/ss_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/verification/documentation/assets/images/ss_3.png -------------------------------------------------------------------------------- /verification/documentation/assets/images/ss_4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/verification/documentation/assets/images/ss_4.png -------------------------------------------------------------------------------- /verification/documentation/assets/images/ss_5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/verification/documentation/assets/images/ss_5.png -------------------------------------------------------------------------------- /verification/documentation/assets/images/ss_6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/verification/documentation/assets/images/ss_6.png -------------------------------------------------------------------------------- /verification/documentation/assets/css/img/warning.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/verification/documentation/assets/css/img/warning.png -------------------------------------------------------------------------------- /verification/documentation/assets/images/image_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/verification/documentation/assets/images/image_1.png -------------------------------------------------------------------------------- /verification/assets/fonts/glyphicons-halflings-regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/verification/assets/fonts/glyphicons-halflings-regular.eot -------------------------------------------------------------------------------- /verification/assets/fonts/glyphicons-halflings-regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/verification/assets/fonts/glyphicons-halflings-regular.ttf -------------------------------------------------------------------------------- /verification/assets/fonts/glyphicons-halflings-regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ivanmiranda/digitalpersona/HEAD/verification/assets/fonts/glyphicons-halflings-regular.woff -------------------------------------------------------------------------------- /getac.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /verification/getac.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /register.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /verification/register.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /verification.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /verification/verification.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /include/global.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /verification/assets/js/npm.js: -------------------------------------------------------------------------------- 1 | // This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment. 2 | require('../../js/transition.js') 3 | require('../../js/alert.js') 4 | require('../../js/button.js') 5 | require('../../js/carousel.js') 6 | require('../../js/collapse.js') 7 | require('../../js/dropdown.js') 8 | require('../../js/modal.js') 9 | require('../../js/tooltip.js') 10 | require('../../js/popover.js') 11 | require('../../js/scrollspy.js') 12 | require('../../js/tab.js') 13 | require('../../js/affix.js') -------------------------------------------------------------------------------- /verification/include/global.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /messages.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /verification/messages.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /assets/css/ajaxmask.css: -------------------------------------------------------------------------------- 1 | .ajax-mask { 2 | background: none; 3 | } 4 | 5 | .ajax-mask .loading { 6 | position: fixed; 7 | top: 30%; 8 | left: 50%; 9 | min-width: 125px; 10 | margin-left: -50px; 11 | margin-top: -30px; 12 | padding: 7px; 13 | text-align: center; 14 | color: #333; 15 | font-size: 13px; 16 | border: 1px solid #ddd; 17 | background-color: #eee; 18 | vertical-align: middle; 19 | -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); 20 | -moz-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); 21 | box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); 22 | } 23 | 24 | .ajax-mask span { 25 | line-height:20px; 26 | vertical-align: middle; 27 | } 28 | -------------------------------------------------------------------------------- /verification/assets/css/ajaxmask.css: -------------------------------------------------------------------------------- 1 | .ajax-mask { 2 | background: none; 3 | } 4 | 5 | .ajax-mask .loading { 6 | position: fixed; 7 | top: 30%; 8 | left: 50%; 9 | min-width: 125px; 10 | margin-left: -50px; 11 | margin-top: -30px; 12 | padding: 7px; 13 | text-align: center; 14 | color: #333; 15 | font-size: 13px; 16 | border: 1px solid #ddd; 17 | background-color: #eee; 18 | vertical-align: middle; 19 | -webkit-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); 20 | -moz-box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); 21 | box-shadow: 0 1px 8px rgba(0, 0, 0, 0.1); 22 | } 23 | 24 | .ajax-mask span { 25 | line-height:20px; 26 | vertical-align: middle; 27 | } 28 | -------------------------------------------------------------------------------- /documentation/assets/js/google-code-prettify/prettify.css: -------------------------------------------------------------------------------- 1 | .com { color: #93a1a1; } 2 | .lit { color: #195f91; } 3 | .pun, .opn, .clo { color: #93a1a1; } 4 | .fun { color: #dc322f; } 5 | .str, .atv { color: #D14; } 6 | .kwd, .linenums .tag { color: #1e347b; } 7 | .typ, .atn, .dec, .var { color: teal; } 8 | .pln { color: #48484c; } 9 | 10 | .prettyprint { 11 | padding: 8px; 12 | background-color: #f7f7f9; 13 | border: 1px solid #e1e1e8; 14 | } 15 | .prettyprint.linenums { 16 | -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 17 | -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 18 | box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 19 | } 20 | 21 | /* Specify class=linenums on a pre to get line numbering */ 22 | ol.linenums { 23 | margin: 0 0 0 33px; /* IE indents via margin-left */ 24 | } 25 | ol.linenums li { 26 | padding-left: 12px; 27 | color: #bebec5; 28 | line-height: 18px; 29 | text-shadow: 0 1px 0 #fff; 30 | } -------------------------------------------------------------------------------- /verification/documentation/assets/js/google-code-prettify/prettify.css: -------------------------------------------------------------------------------- 1 | .com { color: #93a1a1; } 2 | .lit { color: #195f91; } 3 | .pun, .opn, .clo { color: #93a1a1; } 4 | .fun { color: #dc322f; } 5 | .str, .atv { color: #D14; } 6 | .kwd, .linenums .tag { color: #1e347b; } 7 | .typ, .atn, .dec, .var { color: teal; } 8 | .pln { color: #48484c; } 9 | 10 | .prettyprint { 11 | padding: 8px; 12 | background-color: #f7f7f9; 13 | border: 1px solid #e1e1e8; 14 | } 15 | .prettyprint.linenums { 16 | -webkit-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 17 | -moz-box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 18 | box-shadow: inset 40px 0 0 #fbfbfc, inset 41px 0 0 #ececf0; 19 | } 20 | 21 | /* Specify class=linenums on a pre to get line numbering */ 22 | ol.linenums { 23 | margin: 0 0 0 33px; /* IE indents via margin-left */ 24 | } 25 | ol.linenums li { 26 | padding-left: 12px; 27 | color: #bebec5; 28 | line-height: 18px; 29 | text-shadow: 0 1px 0 #fff; 30 | } -------------------------------------------------------------------------------- /assets/js/ajaxmask.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Jquery Ajax Loading Mask 3 | * Author: Kevin Sakhuja 4 | * 5 | * Usage: $(element).loadingMask({ stop: true }); 6 | * 7 | */ 8 | 9 | (function($) { 10 | $.fn.ajaxMask = function(options) { 11 | 12 | return this.each(function() { 13 | var settings = $.extend({ 14 | stop: false, 15 | }, options); 16 | 17 | if (!settings.stop) { 18 | var loadingDiv = $('
  ' + 'Please wait...' + '
') 19 | .css({ 20 | 'position': 'absolute', 21 | 'top': 0, 22 | 'left':0, 23 | 'width':'100%', 24 | 'height':'100%', 25 | }); 26 | 27 | $(this).css({ 'position':'relative' }).append(loadingDiv); 28 | } else { 29 | $('.ajax-mask').remove(); 30 | } 31 | }); 32 | 33 | } 34 | })(jQuery); 35 | -------------------------------------------------------------------------------- /verification/assets/js/ajaxmask.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Jquery Ajax Loading Mask 3 | * Author: Kevin Sakhuja 4 | * 5 | * Usage: $(element).loadingMask({ stop: true }); 6 | * 7 | */ 8 | 9 | (function($) { 10 | $.fn.ajaxMask = function(options) { 11 | 12 | return this.each(function() { 13 | var settings = $.extend({ 14 | stop: false, 15 | }, options); 16 | 17 | if (!settings.stop) { 18 | var loadingDiv = $('
  ' + 'Please wait...' + '
') 19 | .css({ 20 | 'position': 'absolute', 21 | 'top': 0, 22 | 'left':0, 23 | 'width':'100%', 24 | 'height':'100%', 25 | }); 26 | 27 | $(this).css({ 'position':'relative' }).append(loadingDiv); 28 | } else { 29 | $('.ajax-mask').remove(); 30 | } 31 | }); 32 | 33 | } 34 | })(jQuery); 35 | -------------------------------------------------------------------------------- /process_verification.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /include/head.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Demo 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /log.php: -------------------------------------------------------------------------------- 1 | 7 | 12 | 0) { 17 | 18 | echo "
" 19 | ."
" 20 | ."" 21 | ."" 22 | ."" 23 | ."" 24 | ."" 25 | ."" 26 | ."" 27 | ."" 28 | .""; 29 | 30 | foreach ($log as $row) { 31 | 32 | echo "" 33 | ."" 34 | ."" 35 | ."" 36 | .""; 37 | 38 | } 39 | 40 | echo 41 | "" 42 | ."
Log TimeUsernameData
".$row['log_time']."".$row['user_name']."".$row['data']."
" 43 | ."
" 44 | ."
"; 45 | 46 | } else { 47 | 48 | echo 'Log Empty'; 49 | 50 | } 51 | 52 | } 53 | ?> -------------------------------------------------------------------------------- /verification/process_verification.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /verification/log.php: -------------------------------------------------------------------------------- 1 | 7 | 12 | 0) { 17 | 18 | echo "
" 19 | ."
" 20 | ."" 21 | ."" 22 | ."" 23 | ."" 24 | ."" 25 | ."" 26 | ."" 27 | ."" 28 | .""; 29 | 30 | foreach ($log as $row) { 31 | 32 | echo "" 33 | ."" 34 | ."" 35 | ."" 36 | .""; 37 | 38 | } 39 | 40 | echo 41 | "" 42 | ."
Log TimeUsernameData
".$row['log_time']."".$row['user_name']."".$row['data']."
" 43 | ."
" 44 | ."
"; 45 | 46 | } else { 47 | 48 | echo 'Log Empty'; 49 | 50 | } 51 | 52 | } 53 | ?> -------------------------------------------------------------------------------- /verification/include/head.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Demo FlexCode SDK 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /assets/js/custom.js: -------------------------------------------------------------------------------- 1 | function load(page) { 2 | $.ajax({ 3 | type : 'GET', 4 | url : page, 5 | success : function(data) { 6 | try { 7 | $('#content').html(data); 8 | } catch (err) { 9 | alert(err); 10 | } 11 | } 12 | }); 13 | } 14 | 15 | function push(page) { 16 | 17 | $.ajax({ 18 | beforeSend : function() { 19 | $('.help-blok').remove(); 20 | }, 21 | type : 'GET', 22 | url : page, 23 | success : function(data) { 24 | try { 25 | 26 | console.log('Data has been pushed..'); 27 | 28 | var res = jQuery.parseJSON(data); 29 | 30 | if (res.result) { 31 | 32 | $.each(res, function(key, value) { 33 | 34 | if (key == 'reload') { 35 | 36 | load(value); 37 | 38 | alert('Data saved..'); 39 | 40 | } 41 | 42 | }); 43 | 44 | } else if (res.result == false) { 45 | 46 | $.each(res, function(key, value) { 47 | 48 | if (key != 'result' && key != 'server' && key != 'notif' ) { 49 | 50 | $('#'+key).after(""+value+"") 51 | 52 | } else if (key == 'server') { 53 | 54 | alert(value); 55 | 56 | } 57 | }); 58 | 59 | } 60 | 61 | } catch (err) { 62 | 63 | alert(err.message); 64 | 65 | } 66 | } 67 | }); 68 | 69 | } 70 | -------------------------------------------------------------------------------- /verification/assets/js/custom.js: -------------------------------------------------------------------------------- 1 | function load(page) { 2 | $.ajax({ 3 | type : 'GET', 4 | url : page, 5 | success : function(data) { 6 | try { 7 | $('#content').html(data); 8 | } catch (err) { 9 | alert(err); 10 | } 11 | } 12 | }); 13 | } 14 | 15 | function push(page) { 16 | 17 | $.ajax({ 18 | beforeSend : function() { 19 | $('.help-blok').remove(); 20 | }, 21 | type : 'GET', 22 | url : page, 23 | success : function(data) { 24 | try { 25 | 26 | console.log('Data has been pushed..'); 27 | 28 | var res = jQuery.parseJSON(data); 29 | 30 | if (res.result) { 31 | 32 | $.each(res, function(key, value) { 33 | 34 | if (key == 'reload') { 35 | 36 | load(value); 37 | 38 | alert('Data saved..'); 39 | 40 | } 41 | 42 | }); 43 | 44 | } else if (res.result == false) { 45 | 46 | $.each(res, function(key, value) { 47 | 48 | if (key != 'result' && key != 'server' && key != 'notif' ) { 49 | 50 | $('#'+key).after(""+value+"") 51 | 52 | } else if (key == 'server') { 53 | 54 | alert(value); 55 | 56 | } 57 | }); 58 | 59 | } 60 | 61 | } catch (err) { 62 | 63 | alert(err.message); 64 | 65 | } 66 | } 67 | }); 68 | 69 | } 70 | -------------------------------------------------------------------------------- /assets/js/jquery.timer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery Timer Plugin (jquery.timer.js) 3 | * @version 1.0.1 4 | * @author James Brooks 5 | * @website http://james.brooks.so 6 | * @license MIT - http://jbrooksuk.mit-license.org 7 | */ 8 | 9 | (function($) { 10 | jQuery.timer = function(interval, callback, options) { 11 | // Create options for the default reset value 12 | var options = jQuery.extend({ reset: 500 }, options); 13 | var interval = interval || options.reset; 14 | 15 | if(!callback) { return false; } 16 | 17 | var Timer = function(interval, callback, disabled) { 18 | // Only used by internal code to call the callback 19 | this.internalCallback = function() { callback(self); }; 20 | 21 | // Clears any timers 22 | this.stop = function() { clearInterval(self.id); }; 23 | // Resets timers to a new time 24 | this.reset = function(time) { 25 | if(self.id) { clearInterval(self.id); } 26 | var time = time || options.reset; 27 | 28 | this.id = setInterval(this.internalCallback, time); 29 | }; 30 | 31 | // Set the interval time again 32 | this.interval = interval; 33 | 34 | // Set the timer, if enabled 35 | if (!disabled) { 36 | this.id = setInterval(this.internalCallback, this.interval); 37 | } 38 | 39 | var self = this; 40 | }; 41 | 42 | // Create a new timer object 43 | return new Timer(interval, callback, options.disabled); 44 | }; 45 | })(jQuery); 46 | -------------------------------------------------------------------------------- /verification/assets/js/jquery.timer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery Timer Plugin (jquery.timer.js) 3 | * @version 1.0.1 4 | * @author James Brooks 5 | * @website http://james.brooks.so 6 | * @license MIT - http://jbrooksuk.mit-license.org 7 | */ 8 | 9 | (function($) { 10 | jQuery.timer = function(interval, callback, options) { 11 | // Create options for the default reset value 12 | var options = jQuery.extend({ reset: 500 }, options); 13 | var interval = interval || options.reset; 14 | 15 | if(!callback) { return false; } 16 | 17 | var Timer = function(interval, callback, disabled) { 18 | // Only used by internal code to call the callback 19 | this.internalCallback = function() { callback(self); }; 20 | 21 | // Clears any timers 22 | this.stop = function() { clearInterval(self.id); }; 23 | // Resets timers to a new time 24 | this.reset = function(time) { 25 | if(self.id) { clearInterval(self.id); } 26 | var time = time || options.reset; 27 | 28 | this.id = setInterval(this.internalCallback, time); 29 | }; 30 | 31 | // Set the interval time again 32 | this.interval = interval; 33 | 34 | // Set the timer, if enabled 35 | if (!disabled) { 36 | this.id = setInterval(this.internalCallback, this.interval); 37 | } 38 | 39 | var self = this; 40 | }; 41 | 42 | // Create a new timer object 43 | return new Timer(interval, callback, options.disabled); 44 | }; 45 | })(jQuery); 46 | -------------------------------------------------------------------------------- /process_register.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /verification/process_register.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /login.php: -------------------------------------------------------------------------------- 1 | 7 | 8 | 19 | 20 |
21 |
22 | 23 |
24 |
25 |
26 | 27 | 41 |
42 | Login 43 |
44 |
45 | 46 |
47 |
48 | 49 | -------------------------------------------------------------------------------- /verification/login.php: -------------------------------------------------------------------------------- 1 | 7 | 8 | 19 | 20 |
21 |
22 | 23 |
24 |
25 |
26 | 27 | 41 |
42 | Login 43 |
44 |
45 | 46 |
47 |
48 | 49 | -------------------------------------------------------------------------------- /index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 33 |
34 |
35 |
36 |
37 | 38 |
39 |
40 |
41 |
42 | 43 | 52 | 53 | -------------------------------------------------------------------------------- /verification/index.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 33 |
34 |
35 |
36 |
37 | 38 |
39 |
40 |
41 |
42 | 43 | 52 | 53 | -------------------------------------------------------------------------------- /documentation/assets/js/jquery.scrollTo.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery.ScrollTo - Easy element scrolling using jQuery. 3 | * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com 4 | * Dual licensed under MIT and GPL. 5 | * Date: 5/25/2009 6 | * @author Ariel Flesler 7 | * @version 1.4.2 8 | * 9 | * http://flesler.blogspot.com/2007/10/jqueryscrollto.html 10 | */ 11 | ;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); -------------------------------------------------------------------------------- /verification/documentation/assets/js/jquery.scrollTo.js: -------------------------------------------------------------------------------- 1 | /** 2 | * jQuery.ScrollTo - Easy element scrolling using jQuery. 3 | * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com 4 | * Dual licensed under MIT and GPL. 5 | * Date: 5/25/2009 6 | * @author Ariel Flesler 7 | * @version 1.4.2 8 | * 9 | * http://flesler.blogspot.com/2007/10/jqueryscrollto.html 10 | */ 11 | ;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); -------------------------------------------------------------------------------- /assets/js/html5shiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.2",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b)}(this,document); -------------------------------------------------------------------------------- /verification/assets/js/html5shiv.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @preserve HTML5 Shiv 3.7.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed 3 | */ 4 | !function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.2",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b)}(this,document); -------------------------------------------------------------------------------- /database/demo_flexcodesdk.sql: -------------------------------------------------------------------------------- 1 | -- phpMyAdmin SQL Dump 2 | -- version 4.2.7.1 3 | -- http://www.phpmyadmin.net 4 | -- 5 | -- Host: 127.0.0.1:3316 6 | -- Generation Time: 04 Mar 2015 pada 05.18 7 | -- Versi Server: 5.6.20 8 | -- PHP Version: 5.5.15 9 | 10 | SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; 11 | SET time_zone = "+00:00"; 12 | 13 | 14 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 15 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; 16 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; 17 | /*!40101 SET NAMES utf8 */; 18 | 19 | -- 20 | -- Database: `demo_flexcodesdk` 21 | -- 22 | 23 | -- -------------------------------------------------------- 24 | 25 | -- 26 | -- Struktur dari tabel `demo_device` 27 | -- 28 | 29 | CREATE TABLE IF NOT EXISTS `demo_device` ( 30 | `device_name` varchar(50) NOT NULL, 31 | `sn` varchar(50) NOT NULL, 32 | `vc` varchar(50) NOT NULL, 33 | `ac` varchar(50) NOT NULL, 34 | `vkey` varchar(50) NOT NULL 35 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 36 | 37 | -- 38 | -- Dumping data untuk tabel `demo_device` 39 | -- 40 | 41 | INSERT INTO `demo_device` (`device_name`, `sn`, `vc`, `ac`, `vkey`) VALUES 42 | ('Device 1', 'C700F002328', 'E44A32B335C4283', 'NWVBAFB710662F041883ANCK', 'F70753028EDAB72D526F2BE2C549E473'), 43 | ('Device 2', 'C700F001339', '7901D3C13E34109', 'VPFAAB943C33362467D451A0', 'AD090B9CB550CD9164F5844C369C3DB0'); 44 | 45 | -- -------------------------------------------------------- 46 | 47 | -- 48 | -- Struktur dari tabel `demo_finger` 49 | -- 50 | 51 | CREATE TABLE IF NOT EXISTS `demo_finger` ( 52 | `user_id` int(11) unsigned NOT NULL, 53 | `finger_id` int(11) unsigned NOT NULL, 54 | `finger_data` text NOT NULL 55 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 56 | 57 | -- -------------------------------------------------------- 58 | 59 | -- 60 | -- Struktur dari tabel `demo_log` 61 | -- 62 | 63 | CREATE TABLE IF NOT EXISTS `demo_log` ( 64 | `log_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 65 | `user_name` varchar(50) NOT NULL, 66 | `data` text NOT NULL COMMENT 'sn+pc time' 67 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 68 | 69 | -- -------------------------------------------------------- 70 | 71 | -- 72 | -- Struktur dari tabel `demo_user` 73 | -- 74 | 75 | CREATE TABLE IF NOT EXISTS `demo_user` ( 76 | `user_id` int(11) unsigned NOT NULL, 77 | `user_name` varchar(50) NOT NULL 78 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; 79 | 80 | -- 81 | -- Indexes for dumped tables 82 | -- 83 | 84 | -- 85 | -- Indexes for table `demo_device` 86 | -- 87 | ALTER TABLE `demo_device` 88 | ADD PRIMARY KEY (`sn`); 89 | 90 | -- 91 | -- Indexes for table `demo_finger` 92 | -- 93 | ALTER TABLE `demo_finger` 94 | ADD PRIMARY KEY (`user_id`); 95 | 96 | -- 97 | -- Indexes for table `demo_log` 98 | -- 99 | ALTER TABLE `demo_log` 100 | ADD PRIMARY KEY (`log_time`); 101 | 102 | -- 103 | -- Indexes for table `demo_user` 104 | -- 105 | ALTER TABLE `demo_user` 106 | ADD PRIMARY KEY (`user_id`); 107 | 108 | -- 109 | -- AUTO_INCREMENT for dumped tables 110 | -- 111 | 112 | -- 113 | -- AUTO_INCREMENT for table `demo_user` 114 | -- 115 | ALTER TABLE `demo_user` 116 | MODIFY `user_id` int(11) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4; 117 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; 118 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; 119 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 120 | -------------------------------------------------------------------------------- /verification/database/demo_flexcodesdk.sql: -------------------------------------------------------------------------------- 1 | -- phpMyAdmin SQL Dump 2 | -- version 4.2.7.1 3 | -- http://www.phpmyadmin.net 4 | -- 5 | -- Host: 127.0.0.1:3316 6 | -- Generation Time: 04 Mar 2015 pada 05.18 7 | -- Versi Server: 5.6.20 8 | -- PHP Version: 5.5.15 9 | 10 | SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; 11 | SET time_zone = "+00:00"; 12 | 13 | 14 | /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 15 | /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; 16 | /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; 17 | /*!40101 SET NAMES utf8 */; 18 | 19 | -- 20 | -- Database: `demo_flexcodesdk` 21 | -- 22 | 23 | -- -------------------------------------------------------- 24 | 25 | -- 26 | -- Struktur dari tabel `demo_device` 27 | -- 28 | 29 | CREATE TABLE IF NOT EXISTS `demo_device` ( 30 | `device_name` varchar(50) NOT NULL, 31 | `sn` varchar(50) NOT NULL, 32 | `vc` varchar(50) NOT NULL, 33 | `ac` varchar(50) NOT NULL, 34 | `vkey` varchar(50) NOT NULL 35 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 36 | 37 | -- 38 | -- Dumping data untuk tabel `demo_device` 39 | -- 40 | 41 | INSERT INTO `demo_device` (`device_name`, `sn`, `vc`, `ac`, `vkey`) VALUES 42 | ('Device 1', 'C700F002328', 'E44A32B335C4283', 'NWVBAFB710662F041883ANCK', 'F70753028EDAB72D526F2BE2C549E473'), 43 | ('Device 2', 'C700F001339', '7901D3C13E34109', 'VPFAAB943C33362467D451A0', 'AD090B9CB550CD9164F5844C369C3DB0'); 44 | 45 | -- -------------------------------------------------------- 46 | 47 | -- 48 | -- Struktur dari tabel `demo_finger` 49 | -- 50 | 51 | CREATE TABLE IF NOT EXISTS `demo_finger` ( 52 | `user_id` int(11) unsigned NOT NULL, 53 | `finger_id` int(11) unsigned NOT NULL, 54 | `finger_data` text NOT NULL 55 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 56 | 57 | -- -------------------------------------------------------- 58 | 59 | -- 60 | -- Struktur dari tabel `demo_log` 61 | -- 62 | 63 | CREATE TABLE IF NOT EXISTS `demo_log` ( 64 | `log_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 65 | `user_name` varchar(50) NOT NULL, 66 | `data` text NOT NULL COMMENT 'sn+pc time' 67 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1; 68 | 69 | -- -------------------------------------------------------- 70 | 71 | -- 72 | -- Struktur dari tabel `demo_user` 73 | -- 74 | 75 | CREATE TABLE IF NOT EXISTS `demo_user` ( 76 | `user_id` int(11) unsigned NOT NULL, 77 | `user_name` varchar(50) NOT NULL 78 | ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ; 79 | 80 | -- 81 | -- Indexes for dumped tables 82 | -- 83 | 84 | -- 85 | -- Indexes for table `demo_device` 86 | -- 87 | ALTER TABLE `demo_device` 88 | ADD PRIMARY KEY (`sn`); 89 | 90 | -- 91 | -- Indexes for table `demo_finger` 92 | -- 93 | ALTER TABLE `demo_finger` 94 | ADD PRIMARY KEY (`user_id`); 95 | 96 | -- 97 | -- Indexes for table `demo_log` 98 | -- 99 | ALTER TABLE `demo_log` 100 | ADD PRIMARY KEY (`log_time`); 101 | 102 | -- 103 | -- Indexes for table `demo_user` 104 | -- 105 | ALTER TABLE `demo_user` 106 | ADD PRIMARY KEY (`user_id`); 107 | 108 | -- 109 | -- AUTO_INCREMENT for dumped tables 110 | -- 111 | 112 | -- 113 | -- AUTO_INCREMENT for table `demo_user` 114 | -- 115 | ALTER TABLE `demo_user` 116 | MODIFY `user_id` int(11) unsigned NOT NULL AUTO_INCREMENT,AUTO_INCREMENT=4; 117 | /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; 118 | /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; 119 | /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; 120 | -------------------------------------------------------------------------------- /assets/js/respond.min.js: -------------------------------------------------------------------------------- 1 | /*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl 2 | * Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT 3 | * */ 4 | 5 | !function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b #mq-test-1 { width: 42px; }',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b $row['device_name'], 14 | 'sn' => $row['sn'], 15 | 'vc' => $row['vc'], 16 | 'ac' => $row['ac'], 17 | 'vkey' => $row['vkey'] 18 | ); 19 | 20 | $i++; 21 | 22 | } 23 | 24 | return $arr; 25 | 26 | } 27 | 28 | function getDeviceAcSn($vc) { 29 | 30 | $sql = "SELECT * FROM demo_device WHERE vc ='".$vc."'"; 31 | $result = mysqli_query($sql); 32 | $arr = array(); 33 | $i = 0; 34 | 35 | while ($row = mysqli_fetch_array($result)) { 36 | 37 | $arr[$i] = array( 38 | 'device_name' => $row['device_name'], 39 | 'sn' => $row['sn'], 40 | 'vc' => $row['vc'], 41 | 'ac' => $row['ac'], 42 | 'vkey' => $row['vkey'] 43 | ); 44 | 45 | $i++; 46 | 47 | } 48 | 49 | return $arr; 50 | 51 | } 52 | 53 | function getDeviceBySn($sn) { 54 | 55 | $sql = "SELECT * FROM demo_device WHERE sn ='".$sn."'"; 56 | $result = mysqli_query($sql); 57 | $arr = array(); 58 | $i = 0; 59 | 60 | while ($row = mysqli_fetch_array($result)) { 61 | 62 | $arr[$i] = array( 63 | 'device_name' => $row['device_name'], 64 | 'sn' => $row['sn'], 65 | 'vc' => $row['vc'], 66 | 'ac' => $row['ac'], 67 | 'vkey' => $row['vkey'] 68 | ); 69 | 70 | $i++; 71 | 72 | } 73 | 74 | return $arr; 75 | 76 | } 77 | 78 | function getUser() { 79 | 80 | $sql = 'SELECT * FROM demo_user ORDER BY user_name ASC'; 81 | $result = mysqli_query($sql); 82 | $arr = array(); 83 | $i = 0; 84 | 85 | while ($row = mysqli_fetch_array($result)) { 86 | 87 | $arr[$i] = array( 88 | 'user_id' => $row['user_id'], 89 | 'user_name' => $row['user_name'] 90 | ); 91 | 92 | $i++; 93 | 94 | } 95 | 96 | return $arr; 97 | 98 | } 99 | 100 | function deviceCheckSn($sn) { 101 | 102 | $sql = "SELECT count(sn) as ct FROM demo_device WHERE sn = '".$sn."'"; 103 | $result = mysqli_query($sql); 104 | $data = mysqli_fetch_array($result); 105 | 106 | if ($data['ct'] != '0' && $data['ct'] != '') { 107 | return "sn already exist!"; 108 | } else { 109 | return 1; 110 | } 111 | 112 | } 113 | 114 | function checkUserName($user_name) { 115 | 116 | $sql = "SELECT user_name FROM demo_user WHERE user_name = '".$user_name."'"; 117 | $result = mysqli_query($sql); 118 | $row = mysqli_num_rows($result); 119 | 120 | if ($row>0) { 121 | return "Username exist!"; 122 | } else { 123 | return "1"; 124 | } 125 | 126 | } 127 | 128 | function getUserFinger($user_id) { 129 | 130 | $sql = "SELECT * FROM demo_finger WHERE user_id= '".$user_id."' "; 131 | $result = mysqli_query($sql); 132 | $arr = array(); 133 | $i = 0; 134 | 135 | while($row = mysqli_fetch_array($result)) { 136 | 137 | $arr[$i] = array( 138 | 'user_id' =>$row['user_id'], 139 | "finger_id" =>$row['finger_id'], 140 | "finger_data" =>$row['finger_data'] 141 | ); 142 | $i++; 143 | 144 | } 145 | 146 | return $arr; 147 | 148 | } 149 | 150 | function getLog() { 151 | 152 | $sql = 'SELECT * FROM demo_log ORDER BY log_time DESC'; 153 | $result = mysqli_query($sql); 154 | $arr = array(); 155 | $i = 0; 156 | 157 | while ($row = mysqli_fetch_array($result)) { 158 | 159 | $arr[$i] = array( 160 | 'log_time' => $row['log_time'], 161 | 'user_name' => $row['user_name'], 162 | 'data' => $row['data'] 163 | ); 164 | 165 | $i++; 166 | 167 | } 168 | 169 | return $arr; 170 | 171 | } 172 | 173 | function createLog($user_name, $time, $sn) { 174 | 175 | $sq1 = "INSERT INTO demo_log SET user_name='".$user_name."', data='".date('Y-m-d H:i:s', strtotime($time))." (PC Time) | ".$sn." (SN)"."' "; 176 | $result1 = mysqli_query($sq1); 177 | if ($result1) { 178 | return 1; 179 | } else { 180 | return "Error insert log data!"; 181 | } 182 | 183 | } 184 | 185 | ?> -------------------------------------------------------------------------------- /verification/include/function.php: -------------------------------------------------------------------------------- 1 | $row['device_name'], 14 | 'sn' => $row['sn'], 15 | 'vc' => $row['vc'], 16 | 'ac' => $row['ac'], 17 | 'vkey' => $row['vkey'] 18 | ); 19 | 20 | $i++; 21 | 22 | } 23 | 24 | return $arr; 25 | 26 | } 27 | 28 | function getDeviceAcSn($vc) { 29 | 30 | $sql = "SELECT * FROM demo_device WHERE vc ='".$vc."'"; 31 | $result = mysqli_query($sql); 32 | $arr = array(); 33 | $i = 0; 34 | 35 | while ($row = mysqli_fetch_array($result)) { 36 | 37 | $arr[$i] = array( 38 | 'device_name' => $row['device_name'], 39 | 'sn' => $row['sn'], 40 | 'vc' => $row['vc'], 41 | 'ac' => $row['ac'], 42 | 'vkey' => $row['vkey'] 43 | ); 44 | 45 | $i++; 46 | 47 | } 48 | 49 | return $arr; 50 | 51 | } 52 | 53 | function getDeviceBySn($sn) { 54 | 55 | $sql = "SELECT * FROM demo_device WHERE sn ='".$sn."'"; 56 | $result = mysqli_query($sql); 57 | $arr = array(); 58 | $i = 0; 59 | 60 | while ($row = mysqli_fetch_array($result)) { 61 | 62 | $arr[$i] = array( 63 | 'device_name' => $row['device_name'], 64 | 'sn' => $row['sn'], 65 | 'vc' => $row['vc'], 66 | 'ac' => $row['ac'], 67 | 'vkey' => $row['vkey'] 68 | ); 69 | 70 | $i++; 71 | 72 | } 73 | 74 | return $arr; 75 | 76 | } 77 | 78 | function getUser() { 79 | 80 | $sql = 'SELECT * FROM demo_user ORDER BY user_name ASC'; 81 | $result = mysqli_query($sql); 82 | $arr = array(); 83 | $i = 0; 84 | 85 | while ($row = mysqli_fetch_array($result)) { 86 | 87 | $arr[$i] = array( 88 | 'user_id' => $row['user_id'], 89 | 'user_name' => $row['user_name'] 90 | ); 91 | 92 | $i++; 93 | 94 | } 95 | 96 | return $arr; 97 | 98 | } 99 | 100 | function deviceCheckSn($sn) { 101 | 102 | $sql = "SELECT count(sn) as ct FROM demo_device WHERE sn = '".$sn."'"; 103 | $result = mysqli_query($sql); 104 | $data = mysqli_fetch_array($result); 105 | 106 | if ($data['ct'] != '0' && $data['ct'] != '') { 107 | return "sn already exist!"; 108 | } else { 109 | return 1; 110 | } 111 | 112 | } 113 | 114 | function checkUserName($user_name) { 115 | 116 | $sql = "SELECT user_name FROM demo_user WHERE user_name = '".$user_name."'"; 117 | $result = mysqli_query($sql); 118 | $row = mysqli_num_rows($result); 119 | 120 | if ($row>0) { 121 | return "Username exist!"; 122 | } else { 123 | return "1"; 124 | } 125 | 126 | } 127 | 128 | function getUserFinger($user_id) { 129 | 130 | $sql = "SELECT * FROM demo_finger WHERE user_id= '".$user_id."' "; 131 | $result = mysqli_query($sql); 132 | $arr = array(); 133 | $i = 0; 134 | 135 | while($row = mysqli_fetch_array($result)) { 136 | 137 | $arr[$i] = array( 138 | 'user_id' =>$row['user_id'], 139 | "finger_id" =>$row['finger_id'], 140 | "finger_data" =>$row['finger_data'] 141 | ); 142 | $i++; 143 | 144 | } 145 | 146 | return $arr; 147 | 148 | } 149 | 150 | function getLog() { 151 | 152 | $sql = 'SELECT * FROM demo_log ORDER BY log_time DESC'; 153 | $result = mysqli_query($sql); 154 | $arr = array(); 155 | $i = 0; 156 | 157 | while ($row = mysqli_fetch_array($result)) { 158 | 159 | $arr[$i] = array( 160 | 'log_time' => $row['log_time'], 161 | 'user_name' => $row['user_name'], 162 | 'data' => $row['data'] 163 | ); 164 | 165 | $i++; 166 | 167 | } 168 | 169 | return $arr; 170 | 171 | } 172 | 173 | function createLog($user_name, $time, $sn) { 174 | 175 | $sq1 = "INSERT INTO demo_log SET user_name='".$user_name."', data='".date('Y-m-d H:i:s', strtotime($time))." (PC Time) | ".$sn." (SN)"."' "; 176 | $result1 = mysqli_query($sq1); 177 | if ($result1) { 178 | return 1; 179 | } else { 180 | return "Error insert log data!"; 181 | } 182 | 183 | } 184 | 185 | ?> -------------------------------------------------------------------------------- /documentation/assets/js/script.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Documenter 2.0 3 | * http://rxa.li/documenter 4 | * 5 | * Copyright 2011, Xaver Birsak 6 | * http://revaxarts.com 7 | * 8 | */ 9 | 10 | $(document).ready(function() { 11 | var timeout, 12 | sections = new Array(), 13 | sectionscount = 0, 14 | win = $(window), 15 | sidebar = $('#documenter_sidebar'), 16 | nav = $('#documenter_nav'), 17 | logo = $('#documenter_logo'), 18 | navanchors = nav.find('a'), 19 | timeoffset = 50, 20 | hash = location.hash || null; 21 | iDeviceNotOS4 = (navigator.userAgent.match(/iphone|ipod|ipad/i) && !navigator.userAgent.match(/OS 5/i)) || false, 22 | badIE = $('html').prop('class').match(/ie(6|7|8)/)|| false; 23 | 24 | //handle external links (new window) 25 | $('a[href^=http]').bind('click',function(){ 26 | window.open($(this).attr('href')); 27 | return false; 28 | }); 29 | 30 | //IE 8 and lower doesn't like the smooth pagescroll 31 | if(!badIE){ 32 | window.scroll(0,0); 33 | 34 | $('a[href^=#]').bind('click touchstart',function(){ 35 | hash = $(this).attr('href'); 36 | $.scrollTo.window().queue([]).stop(); 37 | goTo(hash); 38 | return false; 39 | }); 40 | 41 | //if a hash is set => go to it 42 | if(hash){ 43 | setTimeout(function(){ 44 | goTo(hash); 45 | },500); 46 | } 47 | } 48 | 49 | 50 | //We need the position of each section until the full page with all images is loaded 51 | win.bind('load',function(){ 52 | 53 | var sectionselector = 'section'; 54 | 55 | //Documentation has subcategories 56 | if(nav.find('ol').length){ 57 | sectionselector = 'section, h4'; 58 | } 59 | //saving some information 60 | $(sectionselector).each(function(i,e){ 61 | var _this = $(this); 62 | var p = { 63 | id: this.id, 64 | pos: _this.offset().top 65 | }; 66 | sections.push(p); 67 | }); 68 | 69 | 70 | //iPhone, iPod and iPad don't trigger the scroll event 71 | if(iDeviceNotOS4){ 72 | nav.find('a').bind('click',function(){ 73 | setTimeout(function(){ 74 | win.trigger('scroll'); 75 | },duration); 76 | 77 | }); 78 | //scroll to top 79 | window.scroll(0,0); 80 | } 81 | 82 | //how many sections 83 | sectionscount = sections.length; 84 | 85 | //bind the handler to the scroll event 86 | win.bind('scroll',function(event){ 87 | clearInterval(timeout); 88 | //should occur with a delay 89 | timeout = setTimeout(function(){ 90 | //get the position from the very top in all browsers 91 | pos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; 92 | 93 | //iDeviceNotOS4s don't know the fixed property so we fake it 94 | if(iDeviceNotOS4){ 95 | sidebar.css({height:document.height}); 96 | logo.css({'margin-top':pos}); 97 | } 98 | //activate Nav element at the current position 99 | activateNav(pos); 100 | },timeoffset); 101 | }).trigger('scroll'); 102 | 103 | }); 104 | 105 | //the function is called when the hash changes 106 | function hashchange(){ 107 | goTo(location.hash, false); 108 | } 109 | 110 | //scroll to a section and set the hash 111 | function goTo(hash,changehash){ 112 | win.unbind('hashchange', hashchange); 113 | hash = hash.replace(/!\//,''); 114 | win.stop().scrollTo(hash,duration,{ 115 | easing:easing, 116 | axis:'y' 117 | }); 118 | if(changehash !== false){ 119 | var l = location; 120 | location.href = (l.protocol+'//'+l.host+l.pathname+'#!/'+hash.substr(1)); 121 | } 122 | win.bind('hashchange', hashchange); 123 | } 124 | 125 | 126 | //activate current nav element 127 | function activateNav(pos){ 128 | var offset = 100, 129 | current, next, parent, isSub, hasSub; 130 | win.unbind('hashchange', hashchange); 131 | for(var i=sectionscount;i>0;i--){ 132 | if(sections[i-1].pos <= pos+offset){ 133 | navanchors.removeClass('current'); 134 | current = navanchors.eq(i-1); 135 | current.addClass('current'); 136 | 137 | parent = current.parent().parent(); 138 | next = current.next(); 139 | 140 | hasSub = next.is('ul'); 141 | isSub = !parent.is('#documenter_nav'); 142 | 143 | nav.find('ol:visible').not(parent).slideUp('fast'); 144 | if(isSub){ 145 | parent.prev().addClass('current'); 146 | parent.stop().slideDown('fast'); 147 | }else if(hasSub){ 148 | next.stop().slideDown('fast'); 149 | } 150 | win.bind('hashchange', hashchange); 151 | break; 152 | }; 153 | } 154 | } 155 | 156 | // make code pretty 157 | window.prettyPrint && prettyPrint(); 158 | 159 | }); -------------------------------------------------------------------------------- /verification/documentation/assets/js/script.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Documenter 2.0 3 | * http://rxa.li/documenter 4 | * 5 | * Copyright 2011, Xaver Birsak 6 | * http://revaxarts.com 7 | * 8 | */ 9 | 10 | $(document).ready(function() { 11 | var timeout, 12 | sections = new Array(), 13 | sectionscount = 0, 14 | win = $(window), 15 | sidebar = $('#documenter_sidebar'), 16 | nav = $('#documenter_nav'), 17 | logo = $('#documenter_logo'), 18 | navanchors = nav.find('a'), 19 | timeoffset = 50, 20 | hash = location.hash || null; 21 | iDeviceNotOS4 = (navigator.userAgent.match(/iphone|ipod|ipad/i) && !navigator.userAgent.match(/OS 5/i)) || false, 22 | badIE = $('html').prop('class').match(/ie(6|7|8)/)|| false; 23 | 24 | //handle external links (new window) 25 | $('a[href^=http]').bind('click',function(){ 26 | window.open($(this).attr('href')); 27 | return false; 28 | }); 29 | 30 | //IE 8 and lower doesn't like the smooth pagescroll 31 | if(!badIE){ 32 | window.scroll(0,0); 33 | 34 | $('a[href^=#]').bind('click touchstart',function(){ 35 | hash = $(this).attr('href'); 36 | $.scrollTo.window().queue([]).stop(); 37 | goTo(hash); 38 | return false; 39 | }); 40 | 41 | //if a hash is set => go to it 42 | if(hash){ 43 | setTimeout(function(){ 44 | goTo(hash); 45 | },500); 46 | } 47 | } 48 | 49 | 50 | //We need the position of each section until the full page with all images is loaded 51 | win.bind('load',function(){ 52 | 53 | var sectionselector = 'section'; 54 | 55 | //Documentation has subcategories 56 | if(nav.find('ol').length){ 57 | sectionselector = 'section, h4'; 58 | } 59 | //saving some information 60 | $(sectionselector).each(function(i,e){ 61 | var _this = $(this); 62 | var p = { 63 | id: this.id, 64 | pos: _this.offset().top 65 | }; 66 | sections.push(p); 67 | }); 68 | 69 | 70 | //iPhone, iPod and iPad don't trigger the scroll event 71 | if(iDeviceNotOS4){ 72 | nav.find('a').bind('click',function(){ 73 | setTimeout(function(){ 74 | win.trigger('scroll'); 75 | },duration); 76 | 77 | }); 78 | //scroll to top 79 | window.scroll(0,0); 80 | } 81 | 82 | //how many sections 83 | sectionscount = sections.length; 84 | 85 | //bind the handler to the scroll event 86 | win.bind('scroll',function(event){ 87 | clearInterval(timeout); 88 | //should occur with a delay 89 | timeout = setTimeout(function(){ 90 | //get the position from the very top in all browsers 91 | pos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop; 92 | 93 | //iDeviceNotOS4s don't know the fixed property so we fake it 94 | if(iDeviceNotOS4){ 95 | sidebar.css({height:document.height}); 96 | logo.css({'margin-top':pos}); 97 | } 98 | //activate Nav element at the current position 99 | activateNav(pos); 100 | },timeoffset); 101 | }).trigger('scroll'); 102 | 103 | }); 104 | 105 | //the function is called when the hash changes 106 | function hashchange(){ 107 | goTo(location.hash, false); 108 | } 109 | 110 | //scroll to a section and set the hash 111 | function goTo(hash,changehash){ 112 | win.unbind('hashchange', hashchange); 113 | hash = hash.replace(/!\//,''); 114 | win.stop().scrollTo(hash,duration,{ 115 | easing:easing, 116 | axis:'y' 117 | }); 118 | if(changehash !== false){ 119 | var l = location; 120 | location.href = (l.protocol+'//'+l.host+l.pathname+'#!/'+hash.substr(1)); 121 | } 122 | win.bind('hashchange', hashchange); 123 | } 124 | 125 | 126 | //activate current nav element 127 | function activateNav(pos){ 128 | var offset = 100, 129 | current, next, parent, isSub, hasSub; 130 | win.unbind('hashchange', hashchange); 131 | for(var i=sectionscount;i>0;i--){ 132 | if(sections[i-1].pos <= pos+offset){ 133 | navanchors.removeClass('current'); 134 | current = navanchors.eq(i-1); 135 | current.addClass('current'); 136 | 137 | parent = current.parent().parent(); 138 | next = current.next(); 139 | 140 | hasSub = next.is('ul'); 141 | isSub = !parent.is('#documenter_nav'); 142 | 143 | nav.find('ol:visible').not(parent).slideUp('fast'); 144 | if(isSub){ 145 | parent.prev().addClass('current'); 146 | parent.stop().slideDown('fast'); 147 | }else if(hasSub){ 148 | next.stop().slideDown('fast'); 149 | } 150 | win.bind('hashchange', hashchange); 151 | break; 152 | }; 153 | } 154 | } 155 | 156 | // make code pretty 157 | window.prettyPrint && prettyPrint(); 158 | 159 | }); -------------------------------------------------------------------------------- /device.php: -------------------------------------------------------------------------------- 1 | 7 | 8 | 24 | 25 |
26 |
27 | 28 |
29 |
30 |
31 | 32 | 0) { 37 | 38 | echo "
" 39 | ."
" 40 | ."" 41 | ."" 42 | ."" 43 | ."" 44 | ."" 45 | ."" 46 | ."" 47 | ."" 48 | ."" 49 | ."" 50 | ."" 51 | .""; 52 | 53 | foreach ($device as $row) { 54 | 55 | echo "" 56 | ."" 57 | ."" 58 | ."" 59 | ."" 60 | ."" 61 | ."" 64 | .""; 65 | 66 | } 67 | 68 | echo 69 | "" 70 | ."
Device NameDevice SNDevice VCDevice ACDevice VKEYAction
".$row['device_name']."".$row['sn']."".$row['vc']."".$row['ac']."".substr($row['vkey'], 0, 2)."..." 62 | ."" 63 | ."
" 71 | ."
" 72 | ."
"; 73 | 74 | } else { 75 | 76 | echo 'Device Empty'; 77 | 78 | } 79 | 80 | } elseif (isset($_GET['action']) && $_GET['action'] == 'create') { 81 | ?> 82 | 98 | 99 |
100 |
101 | 102 |
103 |
104 |
105 | 106 | 107 |
108 |
109 | 110 | 111 |
112 |
113 | 114 | 115 |
116 |
117 | 118 | 119 |
120 |
121 | 122 | 123 |
124 | Back 125 | 126 |
127 |
128 | 129 |
130 |
131 | 132 | 1) { 179 | 180 | echo json_encode($res); 181 | 182 | } else { 183 | 184 | $sql = "INSERT INTO demo_device SET device_name='".$_GET['device_name']."', sn='".$_GET['sn']."', vc='".$_GET['vc']."', ac='".$_GET['ac']."', vkey='".$_GET['vkey']."' "; 185 | $result = mysqli_query($sql); 186 | 187 | if ($result) { 188 | 189 | $res['result'] = true; 190 | $res['reload'] = "device.php?action=index"; 191 | 192 | } else { 193 | 194 | $res['server'] = "Error insert data!"; 195 | 196 | } 197 | 198 | echo json_encode($res); 199 | 200 | } 201 | 202 | } elseif (isset($_GET['action']) && $_GET['action'] == 'delete') { 203 | 204 | $sql1 = "DELETE FROM demo_device WHERE sn = '".$_GET['sn']."' "; 205 | $result1 = mysqli_query($sql1); 206 | 207 | if ($result1) { 208 | 209 | $res['result'] = true; 210 | $res['reload'] = "device.php?action=index"; 211 | 212 | } else { 213 | 214 | $res['server'] = "Error delete data!#".$sql1; 215 | 216 | } 217 | 218 | echo json_encode($res); 219 | 220 | } else { 221 | 222 | echo "Parameter invalid.."; 223 | 224 | } 225 | ?> -------------------------------------------------------------------------------- /verification/device.php: -------------------------------------------------------------------------------- 1 | 7 | 8 | 24 | 25 |
26 |
27 | 28 |
29 |
30 |
31 | 32 | 0) { 37 | 38 | echo "
" 39 | ."
" 40 | ."" 41 | ."" 42 | ."" 43 | ."" 44 | ."" 45 | ."" 46 | ."" 47 | ."" 48 | ."" 49 | ."" 50 | ."" 51 | .""; 52 | 53 | foreach ($device as $row) { 54 | 55 | echo "" 56 | ."" 57 | ."" 58 | ."" 59 | ."" 60 | ."" 61 | ."" 64 | .""; 65 | 66 | } 67 | 68 | echo 69 | "" 70 | ."
Device NameDevice SNDevice VCDevice ACDevice VKEYAction
".$row['device_name']."".$row['sn']."".$row['vc']."".$row['ac']."".substr($row['vkey'], 0, 2)."..." 62 | ."" 63 | ."
" 71 | ."
" 72 | ."
"; 73 | 74 | } else { 75 | 76 | echo 'Device Empty'; 77 | 78 | } 79 | 80 | } elseif (isset($_GET['action']) && $_GET['action'] == 'create') { 81 | ?> 82 | 98 | 99 |
100 |
101 | 102 |
103 |
104 |
105 | 106 | 107 |
108 |
109 | 110 | 111 |
112 |
113 | 114 | 115 |
116 |
117 | 118 | 119 |
120 |
121 | 122 | 123 |
124 | Back 125 | 126 |
127 |
128 | 129 |
130 |
131 | 132 | 1) { 179 | 180 | echo json_encode($res); 181 | 182 | } else { 183 | 184 | $sql = "INSERT INTO demo_device SET device_name='".$_GET['device_name']."', sn='".$_GET['sn']."', vc='".$_GET['vc']."', ac='".$_GET['ac']."', vkey='".$_GET['vkey']."' "; 185 | $result = mysqli_query($sql); 186 | 187 | if ($result) { 188 | 189 | $res['result'] = true; 190 | $res['reload'] = "device.php?action=index"; 191 | 192 | } else { 193 | 194 | $res['server'] = "Error insert data!"; 195 | 196 | } 197 | 198 | echo json_encode($res); 199 | 200 | } 201 | 202 | } elseif (isset($_GET['action']) && $_GET['action'] == 'delete') { 203 | 204 | $sql1 = "DELETE FROM demo_device WHERE sn = '".$_GET['sn']."' "; 205 | $result1 = mysqli_query($sql1); 206 | 207 | if ($result1) { 208 | 209 | $res['result'] = true; 210 | $res['reload'] = "device.php?action=index"; 211 | 212 | } else { 213 | 214 | $res['server'] = "Error delete data!#".$sql1; 215 | 216 | } 217 | 218 | echo json_encode($res); 219 | 220 | } else { 221 | 222 | echo "Parameter invalid.."; 223 | 224 | } 225 | ?> -------------------------------------------------------------------------------- /documentation/assets/css/doc.css: -------------------------------------------------------------------------------- 1 | table { 2 | max-width: 100%; 3 | background-color: transparent; 4 | border-collapse: collapse; 5 | border-spacing: 0; 6 | } 7 | 8 | .table { 9 | width: 100%; 10 | margin-bottom: 20px; 11 | } 12 | 13 | .table th, 14 | .table td { 15 | padding: 6px !important; 16 | line-height: 20px; 17 | text-align: left; 18 | vertical-align: top; 19 | border-top: 1px solid #dddddd; 20 | } 21 | 22 | .table th:first-child, 23 | .table td:first-child { 24 | width: 200px; 25 | } 26 | 27 | .table th { 28 | font-weight: bold; 29 | } 30 | 31 | .table thead th { 32 | vertical-align: bottom; 33 | } 34 | 35 | .table caption + thead tr:first-child th, 36 | .table caption + thead tr:first-child td, 37 | .table colgroup + thead tr:first-child th, 38 | .table colgroup + thead tr:first-child td, 39 | .table thead:first-child tr:first-child th, 40 | .table thead:first-child tr:first-child td { 41 | border-top: 0; 42 | } 43 | 44 | .table tbody + tbody { 45 | border-top: 2px solid #dddddd; 46 | } 47 | 48 | .table .table { 49 | background-color: #ffffff; 50 | } 51 | 52 | .table-condensed th, 53 | .table-condensed td { 54 | padding: 4px 5px; 55 | } 56 | 57 | .table-bordered { 58 | border: 1px solid #dddddd; 59 | border-collapse: separate; 60 | *border-collapse: collapse; 61 | border-left: 0; 62 | -webkit-border-radius: 4px; 63 | -moz-border-radius: 4px; 64 | border-radius: 4px; 65 | } 66 | 67 | .table-bordered th, 68 | .table-bordered td { 69 | border-left: 1px solid #dddddd; 70 | } 71 | 72 | .table-bordered caption + thead tr:first-child th, 73 | .table-bordered caption + tbody tr:first-child th, 74 | .table-bordered caption + tbody tr:first-child td, 75 | .table-bordered colgroup + thead tr:first-child th, 76 | .table-bordered colgroup + tbody tr:first-child th, 77 | .table-bordered colgroup + tbody tr:first-child td, 78 | .table-bordered thead:first-child tr:first-child th, 79 | .table-bordered tbody:first-child tr:first-child th, 80 | .table-bordered tbody:first-child tr:first-child td { 81 | border-top: 0; 82 | } 83 | 84 | .table-bordered thead:first-child tr:first-child > th:first-child, 85 | .table-bordered tbody:first-child tr:first-child > td:first-child, 86 | .table-bordered tbody:first-child tr:first-child > th:first-child { 87 | -webkit-border-top-left-radius: 4px; 88 | border-top-left-radius: 4px; 89 | -moz-border-radius-topleft: 4px; 90 | } 91 | 92 | .table-bordered thead:first-child tr:first-child > th:last-child, 93 | .table-bordered tbody:first-child tr:first-child > td:last-child, 94 | .table-bordered tbody:first-child tr:first-child > th:last-child { 95 | -webkit-border-top-right-radius: 4px; 96 | border-top-right-radius: 4px; 97 | -moz-border-radius-topright: 4px; 98 | } 99 | 100 | .table-bordered thead:last-child tr:last-child > th:first-child, 101 | .table-bordered tbody:last-child tr:last-child > td:first-child, 102 | .table-bordered tbody:last-child tr:last-child > th:first-child, 103 | .table-bordered tfoot:last-child tr:last-child > td:first-child, 104 | .table-bordered tfoot:last-child tr:last-child > th:first-child { 105 | -webkit-border-bottom-left-radius: 4px; 106 | border-bottom-left-radius: 4px; 107 | -moz-border-radius-bottomleft: 4px; 108 | } 109 | 110 | .table-bordered thead:last-child tr:last-child > th:last-child, 111 | .table-bordered tbody:last-child tr:last-child > td:last-child, 112 | .table-bordered tbody:last-child tr:last-child > th:last-child, 113 | .table-bordered tfoot:last-child tr:last-child > td:last-child, 114 | .table-bordered tfoot:last-child tr:last-child > th:last-child { 115 | -webkit-border-bottom-right-radius: 4px; 116 | border-bottom-right-radius: 4px; 117 | -moz-border-radius-bottomright: 4px; 118 | } 119 | 120 | .table-bordered tfoot + tbody:last-child tr:last-child td:first-child { 121 | -webkit-border-bottom-left-radius: 0; 122 | border-bottom-left-radius: 0; 123 | -moz-border-radius-bottomleft: 0; 124 | } 125 | 126 | .table-bordered tfoot + tbody:last-child tr:last-child td:last-child { 127 | -webkit-border-bottom-right-radius: 0; 128 | border-bottom-right-radius: 0; 129 | -moz-border-radius-bottomright: 0; 130 | } 131 | 132 | .table-bordered caption + thead tr:first-child th:first-child, 133 | .table-bordered caption + tbody tr:first-child td:first-child, 134 | .table-bordered colgroup + thead tr:first-child th:first-child, 135 | .table-bordered colgroup + tbody tr:first-child td:first-child { 136 | -webkit-border-top-left-radius: 4px; 137 | border-top-left-radius: 4px; 138 | -moz-border-radius-topleft: 4px; 139 | } 140 | 141 | .table-bordered caption + thead tr:first-child th:last-child, 142 | .table-bordered caption + tbody tr:first-child td:last-child, 143 | .table-bordered colgroup + thead tr:first-child th:last-child, 144 | .table-bordered colgroup + tbody tr:first-child td:last-child { 145 | -webkit-border-top-right-radius: 4px; 146 | border-top-right-radius: 4px; 147 | -moz-border-radius-topright: 4px; 148 | } 149 | 150 | .table-striped tbody > tr:nth-child(odd) > td, 151 | .table-striped tbody > tr:nth-child(odd) > th { 152 | background-color: #f9f9f9; 153 | } 154 | 155 | .table-hover tbody tr:hover > td, 156 | .table-hover tbody tr:hover > th { 157 | background-color: #f5f5f5; 158 | } 159 | 160 | table td[class*="span"], 161 | table th[class*="span"], 162 | .row-fluid table td[class*="span"], 163 | .row-fluid table th[class*="span"] { 164 | display: table-cell; 165 | float: none; 166 | margin-left: 0; 167 | } 168 | 169 | .table td.span1, 170 | .table th.span1 { 171 | float: none; 172 | width: 44px; 173 | margin-left: 0; 174 | } 175 | 176 | .table td.span2, 177 | .table th.span2 { 178 | float: none; 179 | width: 124px; 180 | margin-left: 0; 181 | } 182 | 183 | .table td.span3, 184 | .table th.span3 { 185 | float: none; 186 | width: 204px; 187 | margin-left: 0; 188 | } 189 | 190 | .table td.span4, 191 | .table th.span4 { 192 | float: none; 193 | width: 284px; 194 | margin-left: 0; 195 | } 196 | 197 | .table td.span5, 198 | .table th.span5 { 199 | float: none; 200 | width: 364px; 201 | margin-left: 0; 202 | } 203 | 204 | .table td.span6, 205 | .table th.span6 { 206 | float: none; 207 | width: 444px; 208 | margin-left: 0; 209 | } 210 | 211 | .table td.span7, 212 | .table th.span7 { 213 | float: none; 214 | width: 524px; 215 | margin-left: 0; 216 | } 217 | 218 | .table td.span8, 219 | .table th.span8 { 220 | float: none; 221 | width: 604px; 222 | margin-left: 0; 223 | } 224 | 225 | .table td.span9, 226 | .table th.span9 { 227 | float: none; 228 | width: 684px; 229 | margin-left: 0; 230 | } 231 | 232 | .table td.span10, 233 | .table th.span10 { 234 | float: none; 235 | width: 764px; 236 | margin-left: 0; 237 | } 238 | 239 | .table td.span11, 240 | .table th.span11 { 241 | float: none; 242 | width: 844px; 243 | margin-left: 0; 244 | } 245 | 246 | .table td.span12, 247 | .table th.span12 { 248 | float: none; 249 | width: 924px; 250 | margin-left: 0; 251 | } 252 | 253 | .table tbody tr.success > td { 254 | background-color: #dff0d8; 255 | } 256 | 257 | .table tbody tr.error > td { 258 | background-color: #f2dede; 259 | } 260 | 261 | .table tbody tr.warning > td { 262 | background-color: #fcf8e3; 263 | } 264 | 265 | .table tbody tr.info > td { 266 | background-color: #d9edf7; 267 | } 268 | 269 | .table-hover tbody tr.success:hover > td { 270 | background-color: #d0e9c6; 271 | } 272 | 273 | .table-hover tbody tr.error:hover > td { 274 | background-color: #ebcccc; 275 | } 276 | 277 | .table-hover tbody tr.warning:hover > td { 278 | background-color: #faf2cc; 279 | } 280 | 281 | .table-hover tbody tr.info:hover > td { 282 | background-color: #c4e3f3; 283 | } -------------------------------------------------------------------------------- /verification/documentation/assets/css/doc.css: -------------------------------------------------------------------------------- 1 | table { 2 | max-width: 100%; 3 | background-color: transparent; 4 | border-collapse: collapse; 5 | border-spacing: 0; 6 | } 7 | 8 | .table { 9 | width: 100%; 10 | margin-bottom: 20px; 11 | } 12 | 13 | .table th, 14 | .table td { 15 | padding: 6px !important; 16 | line-height: 20px; 17 | text-align: left; 18 | vertical-align: top; 19 | border-top: 1px solid #dddddd; 20 | } 21 | 22 | .table th:first-child, 23 | .table td:first-child { 24 | width: 200px; 25 | } 26 | 27 | .table th { 28 | font-weight: bold; 29 | } 30 | 31 | .table thead th { 32 | vertical-align: bottom; 33 | } 34 | 35 | .table caption + thead tr:first-child th, 36 | .table caption + thead tr:first-child td, 37 | .table colgroup + thead tr:first-child th, 38 | .table colgroup + thead tr:first-child td, 39 | .table thead:first-child tr:first-child th, 40 | .table thead:first-child tr:first-child td { 41 | border-top: 0; 42 | } 43 | 44 | .table tbody + tbody { 45 | border-top: 2px solid #dddddd; 46 | } 47 | 48 | .table .table { 49 | background-color: #ffffff; 50 | } 51 | 52 | .table-condensed th, 53 | .table-condensed td { 54 | padding: 4px 5px; 55 | } 56 | 57 | .table-bordered { 58 | border: 1px solid #dddddd; 59 | border-collapse: separate; 60 | *border-collapse: collapse; 61 | border-left: 0; 62 | -webkit-border-radius: 4px; 63 | -moz-border-radius: 4px; 64 | border-radius: 4px; 65 | } 66 | 67 | .table-bordered th, 68 | .table-bordered td { 69 | border-left: 1px solid #dddddd; 70 | } 71 | 72 | .table-bordered caption + thead tr:first-child th, 73 | .table-bordered caption + tbody tr:first-child th, 74 | .table-bordered caption + tbody tr:first-child td, 75 | .table-bordered colgroup + thead tr:first-child th, 76 | .table-bordered colgroup + tbody tr:first-child th, 77 | .table-bordered colgroup + tbody tr:first-child td, 78 | .table-bordered thead:first-child tr:first-child th, 79 | .table-bordered tbody:first-child tr:first-child th, 80 | .table-bordered tbody:first-child tr:first-child td { 81 | border-top: 0; 82 | } 83 | 84 | .table-bordered thead:first-child tr:first-child > th:first-child, 85 | .table-bordered tbody:first-child tr:first-child > td:first-child, 86 | .table-bordered tbody:first-child tr:first-child > th:first-child { 87 | -webkit-border-top-left-radius: 4px; 88 | border-top-left-radius: 4px; 89 | -moz-border-radius-topleft: 4px; 90 | } 91 | 92 | .table-bordered thead:first-child tr:first-child > th:last-child, 93 | .table-bordered tbody:first-child tr:first-child > td:last-child, 94 | .table-bordered tbody:first-child tr:first-child > th:last-child { 95 | -webkit-border-top-right-radius: 4px; 96 | border-top-right-radius: 4px; 97 | -moz-border-radius-topright: 4px; 98 | } 99 | 100 | .table-bordered thead:last-child tr:last-child > th:first-child, 101 | .table-bordered tbody:last-child tr:last-child > td:first-child, 102 | .table-bordered tbody:last-child tr:last-child > th:first-child, 103 | .table-bordered tfoot:last-child tr:last-child > td:first-child, 104 | .table-bordered tfoot:last-child tr:last-child > th:first-child { 105 | -webkit-border-bottom-left-radius: 4px; 106 | border-bottom-left-radius: 4px; 107 | -moz-border-radius-bottomleft: 4px; 108 | } 109 | 110 | .table-bordered thead:last-child tr:last-child > th:last-child, 111 | .table-bordered tbody:last-child tr:last-child > td:last-child, 112 | .table-bordered tbody:last-child tr:last-child > th:last-child, 113 | .table-bordered tfoot:last-child tr:last-child > td:last-child, 114 | .table-bordered tfoot:last-child tr:last-child > th:last-child { 115 | -webkit-border-bottom-right-radius: 4px; 116 | border-bottom-right-radius: 4px; 117 | -moz-border-radius-bottomright: 4px; 118 | } 119 | 120 | .table-bordered tfoot + tbody:last-child tr:last-child td:first-child { 121 | -webkit-border-bottom-left-radius: 0; 122 | border-bottom-left-radius: 0; 123 | -moz-border-radius-bottomleft: 0; 124 | } 125 | 126 | .table-bordered tfoot + tbody:last-child tr:last-child td:last-child { 127 | -webkit-border-bottom-right-radius: 0; 128 | border-bottom-right-radius: 0; 129 | -moz-border-radius-bottomright: 0; 130 | } 131 | 132 | .table-bordered caption + thead tr:first-child th:first-child, 133 | .table-bordered caption + tbody tr:first-child td:first-child, 134 | .table-bordered colgroup + thead tr:first-child th:first-child, 135 | .table-bordered colgroup + tbody tr:first-child td:first-child { 136 | -webkit-border-top-left-radius: 4px; 137 | border-top-left-radius: 4px; 138 | -moz-border-radius-topleft: 4px; 139 | } 140 | 141 | .table-bordered caption + thead tr:first-child th:last-child, 142 | .table-bordered caption + tbody tr:first-child td:last-child, 143 | .table-bordered colgroup + thead tr:first-child th:last-child, 144 | .table-bordered colgroup + tbody tr:first-child td:last-child { 145 | -webkit-border-top-right-radius: 4px; 146 | border-top-right-radius: 4px; 147 | -moz-border-radius-topright: 4px; 148 | } 149 | 150 | .table-striped tbody > tr:nth-child(odd) > td, 151 | .table-striped tbody > tr:nth-child(odd) > th { 152 | background-color: #f9f9f9; 153 | } 154 | 155 | .table-hover tbody tr:hover > td, 156 | .table-hover tbody tr:hover > th { 157 | background-color: #f5f5f5; 158 | } 159 | 160 | table td[class*="span"], 161 | table th[class*="span"], 162 | .row-fluid table td[class*="span"], 163 | .row-fluid table th[class*="span"] { 164 | display: table-cell; 165 | float: none; 166 | margin-left: 0; 167 | } 168 | 169 | .table td.span1, 170 | .table th.span1 { 171 | float: none; 172 | width: 44px; 173 | margin-left: 0; 174 | } 175 | 176 | .table td.span2, 177 | .table th.span2 { 178 | float: none; 179 | width: 124px; 180 | margin-left: 0; 181 | } 182 | 183 | .table td.span3, 184 | .table th.span3 { 185 | float: none; 186 | width: 204px; 187 | margin-left: 0; 188 | } 189 | 190 | .table td.span4, 191 | .table th.span4 { 192 | float: none; 193 | width: 284px; 194 | margin-left: 0; 195 | } 196 | 197 | .table td.span5, 198 | .table th.span5 { 199 | float: none; 200 | width: 364px; 201 | margin-left: 0; 202 | } 203 | 204 | .table td.span6, 205 | .table th.span6 { 206 | float: none; 207 | width: 444px; 208 | margin-left: 0; 209 | } 210 | 211 | .table td.span7, 212 | .table th.span7 { 213 | float: none; 214 | width: 524px; 215 | margin-left: 0; 216 | } 217 | 218 | .table td.span8, 219 | .table th.span8 { 220 | float: none; 221 | width: 604px; 222 | margin-left: 0; 223 | } 224 | 225 | .table td.span9, 226 | .table th.span9 { 227 | float: none; 228 | width: 684px; 229 | margin-left: 0; 230 | } 231 | 232 | .table td.span10, 233 | .table th.span10 { 234 | float: none; 235 | width: 764px; 236 | margin-left: 0; 237 | } 238 | 239 | .table td.span11, 240 | .table th.span11 { 241 | float: none; 242 | width: 844px; 243 | margin-left: 0; 244 | } 245 | 246 | .table td.span12, 247 | .table th.span12 { 248 | float: none; 249 | width: 924px; 250 | margin-left: 0; 251 | } 252 | 253 | .table tbody tr.success > td { 254 | background-color: #dff0d8; 255 | } 256 | 257 | .table tbody tr.error > td { 258 | background-color: #f2dede; 259 | } 260 | 261 | .table tbody tr.warning > td { 262 | background-color: #fcf8e3; 263 | } 264 | 265 | .table tbody tr.info > td { 266 | background-color: #d9edf7; 267 | } 268 | 269 | .table-hover tbody tr.success:hover > td { 270 | background-color: #d0e9c6; 271 | } 272 | 273 | .table-hover tbody tr.error:hover > td { 274 | background-color: #ebcccc; 275 | } 276 | 277 | .table-hover tbody tr.warning:hover > td { 278 | background-color: #faf2cc; 279 | } 280 | 281 | .table-hover tbody tr.info:hover > td { 282 | background-color: #c4e3f3; 283 | } -------------------------------------------------------------------------------- /user.php: -------------------------------------------------------------------------------- 1 | 7 | 8 | 96 | 97 |
98 |
99 | 100 |
101 |
102 |
103 | 104 | 0) { 109 | 110 | echo "
" 111 | ."
" 112 | ."" 113 | ."" 114 | ."" 115 | ."" 116 | ."" 117 | ."" 118 | ."" 119 | ."" 120 | ."" 121 | .""; 122 | 123 | foreach ($user as $row) { 124 | 125 | $finger = getUserFinger($row['user_id']); 126 | $register = ''; 127 | $verification = ''; 128 | $url_register = base64_encode($base_path."register.php?user_id=".$row['user_id']); 129 | $url_verification = base64_encode($base_path."verification.php?user_id=".$row['user_id']); 130 | 131 | if (count($finger) == 0) { 132 | 133 | $register = "Register"; 134 | 135 | } else { 136 | 137 | $verification = "Login"; 138 | 139 | } 140 | 141 | echo "" 142 | ."" 143 | ."" 144 | ."" 145 | ."" 151 | .""; 152 | 153 | } 154 | 155 | echo 156 | "" 157 | ."
User IDUsernameTemplateAction
".$row['user_id']."".$row['user_name']."".count($finger)."" 146 | ."" 147 | ." " 148 | ."$register" 149 | ."$verification" 150 | ."
" 158 | ."
" 159 | ."
"; 160 | 161 | } else { 162 | 163 | echo 'User Empty'; 164 | 165 | } 166 | 167 | } elseif (isset($_GET['action']) && $_GET['action'] == 'create') { 168 | ?> 169 | 170 | 183 | 184 |
185 |
186 | 187 |
188 |
189 |
190 | 191 | 192 |
193 | Back 194 | 195 |
196 |
197 | 198 |
199 |
200 | 201 | 1) { 224 | 225 | echo json_encode($res); 226 | 227 | } else { 228 | 229 | $sql = "INSERT INTO demo_user SET user_name='".$_GET['user_name']."' "; 230 | $result = mysqli_query($sql); 231 | 232 | if ($result) { 233 | 234 | $res['result'] = true; 235 | $res['reload'] = "user.php?action=index"; 236 | 237 | } else { 238 | 239 | $res['server'] = "Error insert data!"; 240 | 241 | } 242 | 243 | echo json_encode($res); 244 | 245 | } 246 | 247 | } elseif (isset($_GET['action']) && $_GET['action'] == 'delete') { 248 | 249 | $sql1 = "DELETE FROM demo_user WHERE user_id = '".$_GET['user_id']."' "; 250 | $result1 = mysqli_query($sql1); 251 | 252 | $sql2 = "DELETE FROM demo_finger WHERE user_id = '".$_GET['user_id']."' "; 253 | $result2 = mysqli_query($sql2); 254 | 255 | if ($result1 && $result2) { 256 | 257 | $res['result'] = true; 258 | $res['reload'] = "user.php?action=index"; 259 | 260 | } else { 261 | 262 | $res['server'] = "Error delete data!#".$sql1; 263 | 264 | } 265 | 266 | echo json_encode($res); 267 | 268 | } elseif (isset ($_GET['action']) && $_GET['action'] == 'checkreg') { 269 | 270 | $sql1 = "SELECT count(finger_id) as ct FROM demo_finger WHERE user_id=".$_GET['user_id']; 271 | $result1 = mysqli_query($sql1); 272 | $data1 = mysqli_fetch_array($result1); 273 | 274 | if (intval($data1['ct']) > intval($_GET['current'])) { 275 | $res['result'] = true; 276 | $res['current'] = intval($data1['ct']); 277 | } 278 | else 279 | { 280 | $res['result'] = false; 281 | } 282 | echo json_encode($res); 283 | 284 | } else { 285 | 286 | echo "Parameter invalid.."; 287 | 288 | } 289 | ?> -------------------------------------------------------------------------------- /verification/user.php: -------------------------------------------------------------------------------- 1 | 7 | 8 | 96 | 97 |
98 |
99 | 100 |
101 |
102 |
103 | 104 | 0) { 109 | 110 | echo "
" 111 | ."
" 112 | ."" 113 | ."" 114 | ."" 115 | ."" 116 | ."" 117 | ."" 118 | ."" 119 | ."" 120 | ."" 121 | .""; 122 | 123 | foreach ($user as $row) { 124 | 125 | $finger = getUserFinger($row['user_id']); 126 | $register = ''; 127 | $verification = ''; 128 | $url_register = base64_encode($base_path."register.php?user_id=".$row['user_id']); 129 | $url_verification = base64_encode($base_path."verification.php?user_id=".$row['user_id']); 130 | 131 | if (count($finger) == 0) { 132 | 133 | $register = "Register"; 134 | 135 | } else { 136 | 137 | $verification = "Login"; 138 | 139 | } 140 | 141 | echo "" 142 | ."" 143 | ."" 144 | ."" 145 | ."" 151 | .""; 152 | 153 | } 154 | 155 | echo 156 | "" 157 | ."
User IDUsernameTemplateAction
".$row['user_id']."".$row['user_name']."".count($finger)."" 146 | ."" 147 | ." " 148 | ."$register" 149 | ."$verification" 150 | ."
" 158 | ."
" 159 | ."
"; 160 | 161 | } else { 162 | 163 | echo 'User Empty'; 164 | 165 | } 166 | 167 | } elseif (isset($_GET['action']) && $_GET['action'] == 'create') { 168 | ?> 169 | 170 | 183 | 184 |
185 |
186 | 187 |
188 |
189 |
190 | 191 | 192 |
193 | Back 194 | 195 |
196 |
197 | 198 |
199 |
200 | 201 | 1) { 224 | 225 | echo json_encode($res); 226 | 227 | } else { 228 | 229 | $sql = "INSERT INTO demo_user SET user_name='".$_GET['user_name']."' "; 230 | $result = mysqli_query($sql); 231 | 232 | if ($result) { 233 | 234 | $res['result'] = true; 235 | $res['reload'] = "user.php?action=index"; 236 | 237 | } else { 238 | 239 | $res['server'] = "Error insert data!"; 240 | 241 | } 242 | 243 | echo json_encode($res); 244 | 245 | } 246 | 247 | } elseif (isset($_GET['action']) && $_GET['action'] == 'delete') { 248 | 249 | $sql1 = "DELETE FROM demo_user WHERE user_id = '".$_GET['user_id']."' "; 250 | $result1 = mysqli_query($sql1); 251 | 252 | $sql2 = "DELETE FROM demo_finger WHERE user_id = '".$_GET['user_id']."' "; 253 | $result2 = mysqli_query($sql2); 254 | 255 | if ($result1 && $result2) { 256 | 257 | $res['result'] = true; 258 | $res['reload'] = "user.php?action=index"; 259 | 260 | } else { 261 | 262 | $res['server'] = "Error delete data!#".$sql1; 263 | 264 | } 265 | 266 | echo json_encode($res); 267 | 268 | } elseif (isset ($_GET['action']) && $_GET['action'] == 'checkreg') { 269 | 270 | $sql1 = "SELECT count(finger_id) as ct FROM demo_finger WHERE user_id=".$_GET['user_id']; 271 | $result1 = mysqli_query($sql1); 272 | $data1 = mysqli_fetch_array($result1); 273 | 274 | if (intval($data1['ct']) > intval($_GET['current'])) { 275 | $res['result'] = true; 276 | $res['current'] = intval($data1['ct']); 277 | } 278 | else 279 | { 280 | $res['result'] = false; 281 | } 282 | echo json_encode($res); 283 | 284 | } else { 285 | 286 | echo "Parameter invalid.."; 287 | 288 | } 289 | ?> -------------------------------------------------------------------------------- /documentation/assets/js/jquery.easing.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ 3 | * 4 | * Uses the built in easing capabilities added In jQuery 1.1 5 | * to offer multiple easing options 6 | * 7 | * TERMS OF USE - jQuery Easing 8 | * 9 | * Open source under the BSD License. 10 | * 11 | * Copyright © 2008 George McGinley Smith 12 | * All rights reserved. 13 | * 14 | * Redistribution and use in source and binary forms, with or without modification, 15 | * are permitted provided that the following conditions are met: 16 | * 17 | * Redistributions of source code must retain the above copyright notice, this list of 18 | * conditions and the following disclaimer. 19 | * Redistributions in binary form must reproduce the above copyright notice, this list 20 | * of conditions and the following disclaimer in the documentation and/or other materials 21 | * provided with the distribution. 22 | * 23 | * Neither the name of the author nor the names of contributors may be used to endorse 24 | * or promote products derived from this software without specific prior written permission. 25 | * 26 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 27 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 28 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 29 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 30 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 31 | * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 32 | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 33 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 34 | * OF THE POSSIBILITY OF SUCH DAMAGE. 35 | * 36 | */ 37 | 38 | // t: current time, b: begInnIng value, c: change In value, d: duration 39 | jQuery.easing['jswing'] = jQuery.easing['swing']; 40 | 41 | jQuery.extend( jQuery.easing, 42 | { 43 | def: 'easeOutQuad', 44 | swing: function (x, t, b, c, d) { 45 | //alert(jQuery.easing.default); 46 | return jQuery.easing[jQuery.easing.def](x, t, b, c, d); 47 | }, 48 | easeInQuad: function (x, t, b, c, d) { 49 | return c*(t/=d)*t + b; 50 | }, 51 | easeOutQuad: function (x, t, b, c, d) { 52 | return -c *(t/=d)*(t-2) + b; 53 | }, 54 | easeInOutQuad: function (x, t, b, c, d) { 55 | if ((t/=d/2) < 1) return c/2*t*t + b; 56 | return -c/2 * ((--t)*(t-2) - 1) + b; 57 | }, 58 | easeInCubic: function (x, t, b, c, d) { 59 | return c*(t/=d)*t*t + b; 60 | }, 61 | easeOutCubic: function (x, t, b, c, d) { 62 | return c*((t=t/d-1)*t*t + 1) + b; 63 | }, 64 | easeInOutCubic: function (x, t, b, c, d) { 65 | if ((t/=d/2) < 1) return c/2*t*t*t + b; 66 | return c/2*((t-=2)*t*t + 2) + b; 67 | }, 68 | easeInQuart: function (x, t, b, c, d) { 69 | return c*(t/=d)*t*t*t + b; 70 | }, 71 | easeOutQuart: function (x, t, b, c, d) { 72 | return -c * ((t=t/d-1)*t*t*t - 1) + b; 73 | }, 74 | easeInOutQuart: function (x, t, b, c, d) { 75 | if ((t/=d/2) < 1) return c/2*t*t*t*t + b; 76 | return -c/2 * ((t-=2)*t*t*t - 2) + b; 77 | }, 78 | easeInQuint: function (x, t, b, c, d) { 79 | return c*(t/=d)*t*t*t*t + b; 80 | }, 81 | easeOutQuint: function (x, t, b, c, d) { 82 | return c*((t=t/d-1)*t*t*t*t + 1) + b; 83 | }, 84 | easeInOutQuint: function (x, t, b, c, d) { 85 | if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; 86 | return c/2*((t-=2)*t*t*t*t + 2) + b; 87 | }, 88 | easeInSine: function (x, t, b, c, d) { 89 | return -c * Math.cos(t/d * (Math.PI/2)) + c + b; 90 | }, 91 | easeOutSine: function (x, t, b, c, d) { 92 | return c * Math.sin(t/d * (Math.PI/2)) + b; 93 | }, 94 | easeInOutSine: function (x, t, b, c, d) { 95 | return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; 96 | }, 97 | easeInExpo: function (x, t, b, c, d) { 98 | return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; 99 | }, 100 | easeOutExpo: function (x, t, b, c, d) { 101 | return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; 102 | }, 103 | easeInOutExpo: function (x, t, b, c, d) { 104 | if (t==0) return b; 105 | if (t==d) return b+c; 106 | if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; 107 | return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; 108 | }, 109 | easeInCirc: function (x, t, b, c, d) { 110 | return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; 111 | }, 112 | easeOutCirc: function (x, t, b, c, d) { 113 | return c * Math.sqrt(1 - (t=t/d-1)*t) + b; 114 | }, 115 | easeInOutCirc: function (x, t, b, c, d) { 116 | if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; 117 | return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; 118 | }, 119 | easeInElastic: function (x, t, b, c, d) { 120 | var s=1.70158;var p=0;var a=c; 121 | if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; 122 | if (a < Math.abs(c)) { a=c; var s=p/4; } 123 | else var s = p/(2*Math.PI) * Math.asin (c/a); 124 | return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; 125 | }, 126 | easeOutElastic: function (x, t, b, c, d) { 127 | var s=1.70158;var p=0;var a=c; 128 | if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; 129 | if (a < Math.abs(c)) { a=c; var s=p/4; } 130 | else var s = p/(2*Math.PI) * Math.asin (c/a); 131 | return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; 132 | }, 133 | easeInOutElastic: function (x, t, b, c, d) { 134 | var s=1.70158;var p=0;var a=c; 135 | if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); 136 | if (a < Math.abs(c)) { a=c; var s=p/4; } 137 | else var s = p/(2*Math.PI) * Math.asin (c/a); 138 | if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; 139 | return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; 140 | }, 141 | easeInBack: function (x, t, b, c, d, s) { 142 | if (s == undefined) s = 1.70158; 143 | return c*(t/=d)*t*((s+1)*t - s) + b; 144 | }, 145 | easeOutBack: function (x, t, b, c, d, s) { 146 | if (s == undefined) s = 1.70158; 147 | return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; 148 | }, 149 | easeInOutBack: function (x, t, b, c, d, s) { 150 | if (s == undefined) s = 1.70158; 151 | if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; 152 | return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; 153 | }, 154 | easeInBounce: function (x, t, b, c, d) { 155 | return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; 156 | }, 157 | easeOutBounce: function (x, t, b, c, d) { 158 | if ((t/=d) < (1/2.75)) { 159 | return c*(7.5625*t*t) + b; 160 | } else if (t < (2/2.75)) { 161 | return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; 162 | } else if (t < (2.5/2.75)) { 163 | return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; 164 | } else { 165 | return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; 166 | } 167 | }, 168 | easeInOutBounce: function (x, t, b, c, d) { 169 | if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; 170 | return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; 171 | } 172 | }); 173 | 174 | /* 175 | * 176 | * TERMS OF USE - EASING EQUATIONS 177 | * 178 | * Open source under the BSD License. 179 | * 180 | * Copyright © 2001 Robert Penner 181 | * All rights reserved. 182 | * 183 | * Redistribution and use in source and binary forms, with or without modification, 184 | * are permitted provided that the following conditions are met: 185 | * 186 | * Redistributions of source code must retain the above copyright notice, this list of 187 | * conditions and the following disclaimer. 188 | * Redistributions in binary form must reproduce the above copyright notice, this list 189 | * of conditions and the following disclaimer in the documentation and/or other materials 190 | * provided with the distribution. 191 | * 192 | * Neither the name of the author nor the names of contributors may be used to endorse 193 | * or promote products derived from this software without specific prior written permission. 194 | * 195 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 196 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 197 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 198 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 199 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 200 | * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 201 | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 202 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 203 | * OF THE POSSIBILITY OF SUCH DAMAGE. 204 | * 205 | */ -------------------------------------------------------------------------------- /verification/documentation/assets/js/jquery.easing.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ 3 | * 4 | * Uses the built in easing capabilities added In jQuery 1.1 5 | * to offer multiple easing options 6 | * 7 | * TERMS OF USE - jQuery Easing 8 | * 9 | * Open source under the BSD License. 10 | * 11 | * Copyright © 2008 George McGinley Smith 12 | * All rights reserved. 13 | * 14 | * Redistribution and use in source and binary forms, with or without modification, 15 | * are permitted provided that the following conditions are met: 16 | * 17 | * Redistributions of source code must retain the above copyright notice, this list of 18 | * conditions and the following disclaimer. 19 | * Redistributions in binary form must reproduce the above copyright notice, this list 20 | * of conditions and the following disclaimer in the documentation and/or other materials 21 | * provided with the distribution. 22 | * 23 | * Neither the name of the author nor the names of contributors may be used to endorse 24 | * or promote products derived from this software without specific prior written permission. 25 | * 26 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 27 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 28 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 29 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 30 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 31 | * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 32 | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 33 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 34 | * OF THE POSSIBILITY OF SUCH DAMAGE. 35 | * 36 | */ 37 | 38 | // t: current time, b: begInnIng value, c: change In value, d: duration 39 | jQuery.easing['jswing'] = jQuery.easing['swing']; 40 | 41 | jQuery.extend( jQuery.easing, 42 | { 43 | def: 'easeOutQuad', 44 | swing: function (x, t, b, c, d) { 45 | //alert(jQuery.easing.default); 46 | return jQuery.easing[jQuery.easing.def](x, t, b, c, d); 47 | }, 48 | easeInQuad: function (x, t, b, c, d) { 49 | return c*(t/=d)*t + b; 50 | }, 51 | easeOutQuad: function (x, t, b, c, d) { 52 | return -c *(t/=d)*(t-2) + b; 53 | }, 54 | easeInOutQuad: function (x, t, b, c, d) { 55 | if ((t/=d/2) < 1) return c/2*t*t + b; 56 | return -c/2 * ((--t)*(t-2) - 1) + b; 57 | }, 58 | easeInCubic: function (x, t, b, c, d) { 59 | return c*(t/=d)*t*t + b; 60 | }, 61 | easeOutCubic: function (x, t, b, c, d) { 62 | return c*((t=t/d-1)*t*t + 1) + b; 63 | }, 64 | easeInOutCubic: function (x, t, b, c, d) { 65 | if ((t/=d/2) < 1) return c/2*t*t*t + b; 66 | return c/2*((t-=2)*t*t + 2) + b; 67 | }, 68 | easeInQuart: function (x, t, b, c, d) { 69 | return c*(t/=d)*t*t*t + b; 70 | }, 71 | easeOutQuart: function (x, t, b, c, d) { 72 | return -c * ((t=t/d-1)*t*t*t - 1) + b; 73 | }, 74 | easeInOutQuart: function (x, t, b, c, d) { 75 | if ((t/=d/2) < 1) return c/2*t*t*t*t + b; 76 | return -c/2 * ((t-=2)*t*t*t - 2) + b; 77 | }, 78 | easeInQuint: function (x, t, b, c, d) { 79 | return c*(t/=d)*t*t*t*t + b; 80 | }, 81 | easeOutQuint: function (x, t, b, c, d) { 82 | return c*((t=t/d-1)*t*t*t*t + 1) + b; 83 | }, 84 | easeInOutQuint: function (x, t, b, c, d) { 85 | if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; 86 | return c/2*((t-=2)*t*t*t*t + 2) + b; 87 | }, 88 | easeInSine: function (x, t, b, c, d) { 89 | return -c * Math.cos(t/d * (Math.PI/2)) + c + b; 90 | }, 91 | easeOutSine: function (x, t, b, c, d) { 92 | return c * Math.sin(t/d * (Math.PI/2)) + b; 93 | }, 94 | easeInOutSine: function (x, t, b, c, d) { 95 | return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; 96 | }, 97 | easeInExpo: function (x, t, b, c, d) { 98 | return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; 99 | }, 100 | easeOutExpo: function (x, t, b, c, d) { 101 | return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; 102 | }, 103 | easeInOutExpo: function (x, t, b, c, d) { 104 | if (t==0) return b; 105 | if (t==d) return b+c; 106 | if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; 107 | return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; 108 | }, 109 | easeInCirc: function (x, t, b, c, d) { 110 | return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; 111 | }, 112 | easeOutCirc: function (x, t, b, c, d) { 113 | return c * Math.sqrt(1 - (t=t/d-1)*t) + b; 114 | }, 115 | easeInOutCirc: function (x, t, b, c, d) { 116 | if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; 117 | return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; 118 | }, 119 | easeInElastic: function (x, t, b, c, d) { 120 | var s=1.70158;var p=0;var a=c; 121 | if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; 122 | if (a < Math.abs(c)) { a=c; var s=p/4; } 123 | else var s = p/(2*Math.PI) * Math.asin (c/a); 124 | return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; 125 | }, 126 | easeOutElastic: function (x, t, b, c, d) { 127 | var s=1.70158;var p=0;var a=c; 128 | if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; 129 | if (a < Math.abs(c)) { a=c; var s=p/4; } 130 | else var s = p/(2*Math.PI) * Math.asin (c/a); 131 | return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; 132 | }, 133 | easeInOutElastic: function (x, t, b, c, d) { 134 | var s=1.70158;var p=0;var a=c; 135 | if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); 136 | if (a < Math.abs(c)) { a=c; var s=p/4; } 137 | else var s = p/(2*Math.PI) * Math.asin (c/a); 138 | if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; 139 | return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; 140 | }, 141 | easeInBack: function (x, t, b, c, d, s) { 142 | if (s == undefined) s = 1.70158; 143 | return c*(t/=d)*t*((s+1)*t - s) + b; 144 | }, 145 | easeOutBack: function (x, t, b, c, d, s) { 146 | if (s == undefined) s = 1.70158; 147 | return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; 148 | }, 149 | easeInOutBack: function (x, t, b, c, d, s) { 150 | if (s == undefined) s = 1.70158; 151 | if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; 152 | return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; 153 | }, 154 | easeInBounce: function (x, t, b, c, d) { 155 | return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; 156 | }, 157 | easeOutBounce: function (x, t, b, c, d) { 158 | if ((t/=d) < (1/2.75)) { 159 | return c*(7.5625*t*t) + b; 160 | } else if (t < (2/2.75)) { 161 | return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; 162 | } else if (t < (2.5/2.75)) { 163 | return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; 164 | } else { 165 | return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; 166 | } 167 | }, 168 | easeInOutBounce: function (x, t, b, c, d) { 169 | if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; 170 | return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; 171 | } 172 | }); 173 | 174 | /* 175 | * 176 | * TERMS OF USE - EASING EQUATIONS 177 | * 178 | * Open source under the BSD License. 179 | * 180 | * Copyright © 2001 Robert Penner 181 | * All rights reserved. 182 | * 183 | * Redistribution and use in source and binary forms, with or without modification, 184 | * are permitted provided that the following conditions are met: 185 | * 186 | * Redistributions of source code must retain the above copyright notice, this list of 187 | * conditions and the following disclaimer. 188 | * Redistributions in binary form must reproduce the above copyright notice, this list 189 | * of conditions and the following disclaimer in the documentation and/or other materials 190 | * provided with the distribution. 191 | * 192 | * Neither the name of the author nor the names of contributors may be used to endorse 193 | * or promote products derived from this software without specific prior written permission. 194 | * 195 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 196 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 197 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 198 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 199 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE 200 | * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 201 | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 202 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 203 | * OF THE POSSIBILITY OF SUCH DAMAGE. 204 | * 205 | */ -------------------------------------------------------------------------------- /documentation/assets/css/documenter_style.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Documenter 2.0 3 | * http://rxa.li/documenter 4 | * 5 | * Copyright 2011, Xaver Birsak 6 | * http://revaxarts.com 7 | * 8 | */ 9 | html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{ 10 | margin:0; 11 | padding:0; 12 | border:0; 13 | outline:0; 14 | font-weight:inherit; 15 | font-style:inherit; 16 | font-size:100%; 17 | font-family:inherit; 18 | vertical-align:baseline; 19 | } 20 | html { 21 | font-size:101%; 22 | font-family:Arial,verdana,arial,sans-serif; 23 | font-size:12px; 24 | -webkit-text-size-adjust:none; 25 | color:#6F6F6F; 26 | background-color:#efefef; 27 | } 28 | body{ 29 | min-height:100%; 30 | height:auto; 31 | width:100%; 32 | } 33 | footer, header, section { 34 | display:block; 35 | } 36 | a{ color:#6F6F6F; text-decoration:none; cursor:pointer; } 37 | a:hover { text-decoration:underline } 38 | p, ul, ol{ 39 | margin:18px 0; 40 | line-height:1.5em; 41 | } 42 | li{ 43 | list-style:none; 44 | } 45 | li.placeholder{ 46 | height:70px; 47 | width:100%; 48 | font-size:16px; 49 | } 50 | hr { 51 | display:block; 52 | height:0px; 53 | line-height:0px; 54 | border:0; 55 | border-top:1px solid #ddd; 56 | border-bottom:1px solid #aaa; 57 | margin:16px 0; 58 | padding:0; 59 | clear:both; 60 | float:none; 61 | } 62 | hr.notop{ 63 | margin-top:0; 64 | } 65 | strong{ 66 | font-weight:700; 67 | } 68 | #documenter_buttons{ 69 | position:absolute; 70 | right:10px; 71 | margin-top:-30px; 72 | } 73 | .btn{ 74 | cursor:pointer; 75 | width:auto; 76 | padding:7px 7px 8px; 77 | border-radius:3px; 78 | border:1px solid #ccc; 79 | } 80 | .btn:hover{ 81 | border:1px solid #B1B4B0; 82 | box-shadow:0px 2px 2px rgba(0,0,0,0.1); 83 | -moz-box-shadow:0px 2px 2px rgba(0,0,0,0.1); 84 | -webkit-box-shadow:0px 2px 2px rgba(0,0,0,0.1); 85 | text-decoration:none; 86 | } 87 | .btn:active{ 88 | border:1px solid #B1B4B0; 89 | box-shadow:inset 0px 2px 2px rgba(0,0,0,0.1); 90 | -moz-box-shadow:inset 0px 2px 2px rgba(0,0,0,0.1); 91 | -webkit-box-shadow:inset 0px 2px 2px rgba(0,0,0,0.1); 92 | background-color:#eee; 93 | } 94 | 95 | #documenter_content{ 96 | position:absolute; 97 | right:18px; 98 | left:218px; 99 | padding-left:10px; 100 | padding-bottom:800px; 101 | min-height:100%; 102 | height:auto; 103 | z-index:1; 104 | } 105 | #documenter_sidebar{ 106 | -moz-box-shadow:0 0 6px rgba(3,3,3,0.6); 107 | -webkit-box-shadow:0 0 6px rgba(3,3,3,0.6); 108 | box-shadow:0 0 6px rgba(3,3,3,0.6); 109 | position:fixed; 110 | left:0; 111 | width:200px; 112 | height:100%; 113 | min-height:100%; 114 | z-index:100; 115 | } 116 | #documenter_sidebar a{ 117 | position:relative; 118 | z-index:100; 119 | } 120 | img{ 121 | border:0; 122 | } 123 | #documenter_copyright{ 124 | position:absolute; 125 | bottom:10px; 126 | font-size:10px; 127 | right:15px; 128 | width:200px; 129 | text-align:right; 130 | z-index:1 131 | } 132 | noscript{ 133 | display:block; 134 | position:absolute; 135 | top:238px; 136 | margin:0 auto; 137 | width:800px; 138 | bottom:0; 139 | z-index:20; 140 | } 141 | noscript p{ 142 | width:800px; 143 | font-size:20px; 144 | padding-top:20px; 145 | margin:0 auto; 146 | color:#4D4D4D; 147 | } 148 | .small{ 149 | font-size:10px; 150 | letter-spacing:0; 151 | } 152 | 153 | /*----------------------------------------------------------------------*/ 154 | /* Sidebar 155 | /*----------------------------------------------------------------------*/ 156 | 157 | #documenter_sidebar #documenter_logo{ 158 | display:block; 159 | height:20%; 160 | max-height:200px; 161 | min-height:70px; 162 | width:200px; 163 | background-position:center center; 164 | background-repeat:no-repeat; 165 | } 166 | #documenter_sidebar ul{ 167 | font-size:12px; 168 | font-weight:700; 169 | min-height:150px; 170 | height:75%; 171 | overflow:auto; 172 | } 173 | 174 | #documenter_sidebar ul li{ 175 | text-align:right; 176 | padding:0; 177 | } 178 | #documenter_sidebar ul a{ 179 | display:block; 180 | border-top:1px solid #ddd; 181 | border-bottom:1px solid #aaa; 182 | padding:6px 15px 7px 0; 183 | text-align:right; 184 | } 185 | #documenter_sidebar ul a:hover,#documenter_sidebar ul a.current{ 186 | -webkit-text-shadow:none; 187 | -moz-text-shadow:none; 188 | text-shadow:none; 189 | text-decoration:none; 190 | } 191 | #documenter_sidebar ul li ul{ 192 | border-top:0; 193 | font-size:10px; 194 | min-height:10px; 195 | height:auto; 196 | overflow:auto; 197 | margin:0; 198 | display:none; 199 | } 200 | #documenter_sidebar ul li ul li a{ 201 | display:block; 202 | padding:4px 15px 5px 0; 203 | text-align:right; 204 | } 205 | 206 | /*----------------------------------------------------------------------*/ 207 | /* Content 208 | /*----------------------------------------------------------------------*/ 209 | 210 | #documenter_cover{ 211 | position:relative; 212 | height:800px; 213 | padding-top:200px !important; 214 | } 215 | #documenter_cover li{ 216 | list-style:none !important; 217 | margin-left:0 !important; 218 | } 219 | #documenter_cover p{ 220 | width:500px; 221 | } 222 | #documenter_content section{ 223 | padding-top:70px; 224 | } 225 | #documenter_content h1{ 226 | font-size:30px; 227 | font-weight:700; 228 | } 229 | #documenter_content h2{ 230 | font-size:20px; 231 | margin-bottom:18px; 232 | font-weight:100; 233 | } 234 | #documenter_content h3{ 235 | font-size:26px; 236 | margin:18px 0 0; 237 | font-weight:100; 238 | } 239 | #documenter_content h4{ 240 | font-size:20px; 241 | margin:18px 0; 242 | font-weight:100; 243 | } 244 | #documenter_content h5{ 245 | font-size:16px; 246 | margin:18px 0; 247 | font-weight:100; 248 | } 249 | #documenter_content h6{ 250 | font-size:14px; 251 | margin:18px 0; 252 | font-weight:100; 253 | } 254 | #documenter_content p{ 255 | margin:18px 0; 256 | } 257 | #documenter_content ol li{ 258 | list-style:decimal; 259 | margin-left:36px; 260 | } 261 | #documenter_content ul li{ 262 | list-style:square; 263 | margin-left:36px; 264 | } 265 | #documenter_content dl{ 266 | } 267 | #documenter_content dl dt{ 268 | padding-top:12px; 269 | font-weight:700; 270 | font-size:14px; 271 | } 272 | #documenter_content dl dd{ 273 | padding-top:3px; 274 | margin-left:18px; 275 | } 276 | #documenter_content table{ 277 | border-collapse:collapse; 278 | } 279 | #documenter_content table th{ 280 | font-weight:700; 281 | } 282 | #documenter_content table th, #documenter_content table td{ 283 | padding:3px; 284 | text-align:left; 285 | } 286 | #documenter_content code{ 287 | font-family:"Courier New", Courier, monospace; 288 | font-size:12px; 289 | } 290 | #documenter_content .warning{ 291 | padding:10px 10px 10px 30px; 292 | border:1px solid #D5D458; 293 | background-color:#F0FEB1; 294 | background-image:url(img/warning.png); 295 | background-repeat:no-repeat; 296 | background-position: 8px 11px; 297 | } 298 | #documenter_content .info{ 299 | padding:10px 10px 10px 30px; 300 | border:1px solid #6AB3FF; 301 | background-color:#A3D0FF; 302 | background-image:url(img/info.png); 303 | background-repeat:no-repeat; 304 | background-position: 8px 11px; 305 | } 306 | #documenter_content div.alert { 307 | padding: 8px 35px 8px 14px; 308 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); 309 | background-color: #fcf8e3; 310 | border: 1px solid #fbeed5; 311 | -webkit-border-radius: 4px; 312 | -moz-border-radius: 4px; 313 | border-radius: 4px; 314 | } 315 | #documenter_content div.alert-success,#documenter_content div.alert-success div.alert-heading { 316 | color: #468847; 317 | } 318 | #documenter_content div.alert-danger,#documenter_content div.alert-error { 319 | background-color: #f2dede; 320 | border-color: #eed3d7; 321 | } 322 | #documenter_content div.alert-danger, 323 | #documenter_content div.alert-error, 324 | #documenter_content div.alert-danger div.alert-heading, 325 | #documenter_content div.alert-error div.alert-heading { 326 | color: #b94a48; 327 | } 328 | #documenter_content div.alert-info { 329 | background-color: #d9edf7; 330 | border-color: #bce8f1; 331 | } 332 | #documenter_content div.alert-info,#documenter_content div.alert-info div.alert-heading { 333 | color: #3a87ad; 334 | } 335 | #documenter_content div.alert-block { 336 | padding-top: 14px; 337 | padding-bottom: 14px; 338 | } 339 | #documenter_content div.alert-block > p,#documenter_content div.alert-block > ul { 340 | margin-bottom: 0; 341 | } 342 | #documenter_content div.alert-block p + p { 343 | margin-top: 5px; 344 | } 345 | 346 | 347 | 348 | 349 | 350 | /*----------------------------------------------------------------------*/ 351 | /* Print Styles 352 | /*----------------------------------------------------------------------*/ 353 | 354 | @media print { 355 | * { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important; 356 | -ms-filter: none !important; } /* Black prints faster: sanbeiji.com/archives/953 */ 357 | a, a:visited { color: #444 !important; text-decoration: underline; } 358 | a[href]:after { content: " (" attr(href) ")"; } 359 | abbr[title]:after { content: " (" attr(title) ")"; } 360 | .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } /* Don't show links for images, or javascript/internal links */ 361 | pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } 362 | thead { display: table-header-group; } /* css-discuss.incutio.com/wiki/Printing_Tables */ 363 | tr, img { page-break-inside: avoid; } 364 | @page { margin: 0.5cm; } 365 | p, h2, h3 { orphans: 3; widows: 3; } 366 | h2, h3{ page-break-after: avoid; } 367 | hr { border-top:1px solid #000 !important;border-bottom:0 !important; } 368 | 369 | #documenter_sidebar{ 370 | -moz-box-shadow:none; 371 | -webkit-box-shadow:none; 372 | box-shadow:none; 373 | position:absolute; 374 | left:10px; 375 | top:0; 376 | width:100%; 377 | margin-top:500px; 378 | } 379 | #documenter_sidebar ul:before { content: "Table of Contents"; } 380 | 381 | #documenter_sidebar ul{ 382 | border:0 !important; 383 | } 384 | #documenter_sidebar ul li{ 385 | border:0 !important; 386 | text-align:left; 387 | } 388 | #documenter_sidebar ul li a{ 389 | border:0 !important; 390 | text-align:left; 391 | padding:4px; 392 | } 393 | #documenter_sidebar ul li a:hover{ 394 | border:0 !important; 395 | } 396 | #documenter_sidebar #documenter_logo{ 397 | display:none; 398 | } 399 | #documenter_sidebar #documenter_copyright{ 400 | display:none; 401 | } 402 | #documenter_content{ 403 | left:10px; 404 | } 405 | #documenter_cover{ 406 | margin-bottom:300px; 407 | } 408 | #documenter_content .warning{ 409 | background-image:url(img/warning.png) !important; 410 | background-repeat:no-repeat !important; 411 | background-position: 8px 11px !important; 412 | } 413 | #documenter_content .info{ 414 | background-image:url(img/info.png) !important; 415 | background-repeat:no-repeat !important; 416 | background-position: 8px 11px !important; 417 | } 418 | } -------------------------------------------------------------------------------- /verification/documentation/assets/css/documenter_style.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Documenter 2.0 3 | * http://rxa.li/documenter 4 | * 5 | * Copyright 2011, Xaver Birsak 6 | * http://revaxarts.com 7 | * 8 | */ 9 | html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,a,abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td{ 10 | margin:0; 11 | padding:0; 12 | border:0; 13 | outline:0; 14 | font-weight:inherit; 15 | font-style:inherit; 16 | font-size:100%; 17 | font-family:inherit; 18 | vertical-align:baseline; 19 | } 20 | html { 21 | font-size:101%; 22 | font-family:Arial,verdana,arial,sans-serif; 23 | font-size:12px; 24 | -webkit-text-size-adjust:none; 25 | color:#6F6F6F; 26 | background-color:#efefef; 27 | } 28 | body{ 29 | min-height:100%; 30 | height:auto; 31 | width:100%; 32 | } 33 | footer, header, section { 34 | display:block; 35 | } 36 | a{ color:#6F6F6F; text-decoration:none; cursor:pointer; } 37 | a:hover { text-decoration:underline } 38 | p, ul, ol{ 39 | margin:18px 0; 40 | line-height:1.5em; 41 | } 42 | li{ 43 | list-style:none; 44 | } 45 | li.placeholder{ 46 | height:70px; 47 | width:100%; 48 | font-size:16px; 49 | } 50 | hr { 51 | display:block; 52 | height:0px; 53 | line-height:0px; 54 | border:0; 55 | border-top:1px solid #ddd; 56 | border-bottom:1px solid #aaa; 57 | margin:16px 0; 58 | padding:0; 59 | clear:both; 60 | float:none; 61 | } 62 | hr.notop{ 63 | margin-top:0; 64 | } 65 | strong{ 66 | font-weight:700; 67 | } 68 | #documenter_buttons{ 69 | position:absolute; 70 | right:10px; 71 | margin-top:-30px; 72 | } 73 | .btn{ 74 | cursor:pointer; 75 | width:auto; 76 | padding:7px 7px 8px; 77 | border-radius:3px; 78 | border:1px solid #ccc; 79 | } 80 | .btn:hover{ 81 | border:1px solid #B1B4B0; 82 | box-shadow:0px 2px 2px rgba(0,0,0,0.1); 83 | -moz-box-shadow:0px 2px 2px rgba(0,0,0,0.1); 84 | -webkit-box-shadow:0px 2px 2px rgba(0,0,0,0.1); 85 | text-decoration:none; 86 | } 87 | .btn:active{ 88 | border:1px solid #B1B4B0; 89 | box-shadow:inset 0px 2px 2px rgba(0,0,0,0.1); 90 | -moz-box-shadow:inset 0px 2px 2px rgba(0,0,0,0.1); 91 | -webkit-box-shadow:inset 0px 2px 2px rgba(0,0,0,0.1); 92 | background-color:#eee; 93 | } 94 | 95 | #documenter_content{ 96 | position:absolute; 97 | right:18px; 98 | left:218px; 99 | padding-left:10px; 100 | padding-bottom:800px; 101 | min-height:100%; 102 | height:auto; 103 | z-index:1; 104 | } 105 | #documenter_sidebar{ 106 | -moz-box-shadow:0 0 6px rgba(3,3,3,0.6); 107 | -webkit-box-shadow:0 0 6px rgba(3,3,3,0.6); 108 | box-shadow:0 0 6px rgba(3,3,3,0.6); 109 | position:fixed; 110 | left:0; 111 | width:200px; 112 | height:100%; 113 | min-height:100%; 114 | z-index:100; 115 | } 116 | #documenter_sidebar a{ 117 | position:relative; 118 | z-index:100; 119 | } 120 | img{ 121 | border:0; 122 | } 123 | #documenter_copyright{ 124 | position:absolute; 125 | bottom:10px; 126 | font-size:10px; 127 | right:15px; 128 | width:200px; 129 | text-align:right; 130 | z-index:1 131 | } 132 | noscript{ 133 | display:block; 134 | position:absolute; 135 | top:238px; 136 | margin:0 auto; 137 | width:800px; 138 | bottom:0; 139 | z-index:20; 140 | } 141 | noscript p{ 142 | width:800px; 143 | font-size:20px; 144 | padding-top:20px; 145 | margin:0 auto; 146 | color:#4D4D4D; 147 | } 148 | .small{ 149 | font-size:10px; 150 | letter-spacing:0; 151 | } 152 | 153 | /*----------------------------------------------------------------------*/ 154 | /* Sidebar 155 | /*----------------------------------------------------------------------*/ 156 | 157 | #documenter_sidebar #documenter_logo{ 158 | display:block; 159 | height:20%; 160 | max-height:200px; 161 | min-height:70px; 162 | width:200px; 163 | background-position:center center; 164 | background-repeat:no-repeat; 165 | } 166 | #documenter_sidebar ul{ 167 | font-size:12px; 168 | font-weight:700; 169 | min-height:150px; 170 | height:75%; 171 | overflow:auto; 172 | } 173 | 174 | #documenter_sidebar ul li{ 175 | text-align:right; 176 | padding:0; 177 | } 178 | #documenter_sidebar ul a{ 179 | display:block; 180 | border-top:1px solid #ddd; 181 | border-bottom:1px solid #aaa; 182 | padding:6px 15px 7px 0; 183 | text-align:right; 184 | } 185 | #documenter_sidebar ul a:hover,#documenter_sidebar ul a.current{ 186 | -webkit-text-shadow:none; 187 | -moz-text-shadow:none; 188 | text-shadow:none; 189 | text-decoration:none; 190 | } 191 | #documenter_sidebar ul li ul{ 192 | border-top:0; 193 | font-size:10px; 194 | min-height:10px; 195 | height:auto; 196 | overflow:auto; 197 | margin:0; 198 | display:none; 199 | } 200 | #documenter_sidebar ul li ul li a{ 201 | display:block; 202 | padding:4px 15px 5px 0; 203 | text-align:right; 204 | } 205 | 206 | /*----------------------------------------------------------------------*/ 207 | /* Content 208 | /*----------------------------------------------------------------------*/ 209 | 210 | #documenter_cover{ 211 | position:relative; 212 | height:800px; 213 | padding-top:200px !important; 214 | } 215 | #documenter_cover li{ 216 | list-style:none !important; 217 | margin-left:0 !important; 218 | } 219 | #documenter_cover p{ 220 | width:500px; 221 | } 222 | #documenter_content section{ 223 | padding-top:70px; 224 | } 225 | #documenter_content h1{ 226 | font-size:30px; 227 | font-weight:700; 228 | } 229 | #documenter_content h2{ 230 | font-size:20px; 231 | margin-bottom:18px; 232 | font-weight:100; 233 | } 234 | #documenter_content h3{ 235 | font-size:26px; 236 | margin:18px 0 0; 237 | font-weight:100; 238 | } 239 | #documenter_content h4{ 240 | font-size:20px; 241 | margin:18px 0; 242 | font-weight:100; 243 | } 244 | #documenter_content h5{ 245 | font-size:16px; 246 | margin:18px 0; 247 | font-weight:100; 248 | } 249 | #documenter_content h6{ 250 | font-size:14px; 251 | margin:18px 0; 252 | font-weight:100; 253 | } 254 | #documenter_content p{ 255 | margin:18px 0; 256 | } 257 | #documenter_content ol li{ 258 | list-style:decimal; 259 | margin-left:36px; 260 | } 261 | #documenter_content ul li{ 262 | list-style:square; 263 | margin-left:36px; 264 | } 265 | #documenter_content dl{ 266 | } 267 | #documenter_content dl dt{ 268 | padding-top:12px; 269 | font-weight:700; 270 | font-size:14px; 271 | } 272 | #documenter_content dl dd{ 273 | padding-top:3px; 274 | margin-left:18px; 275 | } 276 | #documenter_content table{ 277 | border-collapse:collapse; 278 | } 279 | #documenter_content table th{ 280 | font-weight:700; 281 | } 282 | #documenter_content table th, #documenter_content table td{ 283 | padding:3px; 284 | text-align:left; 285 | } 286 | #documenter_content code{ 287 | font-family:"Courier New", Courier, monospace; 288 | font-size:12px; 289 | } 290 | #documenter_content .warning{ 291 | padding:10px 10px 10px 30px; 292 | border:1px solid #D5D458; 293 | background-color:#F0FEB1; 294 | background-image:url(img/warning.png); 295 | background-repeat:no-repeat; 296 | background-position: 8px 11px; 297 | } 298 | #documenter_content .info{ 299 | padding:10px 10px 10px 30px; 300 | border:1px solid #6AB3FF; 301 | background-color:#A3D0FF; 302 | background-image:url(img/info.png); 303 | background-repeat:no-repeat; 304 | background-position: 8px 11px; 305 | } 306 | #documenter_content div.alert { 307 | padding: 8px 35px 8px 14px; 308 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); 309 | background-color: #fcf8e3; 310 | border: 1px solid #fbeed5; 311 | -webkit-border-radius: 4px; 312 | -moz-border-radius: 4px; 313 | border-radius: 4px; 314 | } 315 | #documenter_content div.alert-success,#documenter_content div.alert-success div.alert-heading { 316 | color: #468847; 317 | } 318 | #documenter_content div.alert-danger,#documenter_content div.alert-error { 319 | background-color: #f2dede; 320 | border-color: #eed3d7; 321 | } 322 | #documenter_content div.alert-danger, 323 | #documenter_content div.alert-error, 324 | #documenter_content div.alert-danger div.alert-heading, 325 | #documenter_content div.alert-error div.alert-heading { 326 | color: #b94a48; 327 | } 328 | #documenter_content div.alert-info { 329 | background-color: #d9edf7; 330 | border-color: #bce8f1; 331 | } 332 | #documenter_content div.alert-info,#documenter_content div.alert-info div.alert-heading { 333 | color: #3a87ad; 334 | } 335 | #documenter_content div.alert-block { 336 | padding-top: 14px; 337 | padding-bottom: 14px; 338 | } 339 | #documenter_content div.alert-block > p,#documenter_content div.alert-block > ul { 340 | margin-bottom: 0; 341 | } 342 | #documenter_content div.alert-block p + p { 343 | margin-top: 5px; 344 | } 345 | 346 | 347 | 348 | 349 | 350 | /*----------------------------------------------------------------------*/ 351 | /* Print Styles 352 | /*----------------------------------------------------------------------*/ 353 | 354 | @media print { 355 | * { background: transparent !important; color: black !important; text-shadow: none !important; filter:none !important; 356 | -ms-filter: none !important; } /* Black prints faster: sanbeiji.com/archives/953 */ 357 | a, a:visited { color: #444 !important; text-decoration: underline; } 358 | a[href]:after { content: " (" attr(href) ")"; } 359 | abbr[title]:after { content: " (" attr(title) ")"; } 360 | .ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after { content: ""; } /* Don't show links for images, or javascript/internal links */ 361 | pre, blockquote { border: 1px solid #999; page-break-inside: avoid; } 362 | thead { display: table-header-group; } /* css-discuss.incutio.com/wiki/Printing_Tables */ 363 | tr, img { page-break-inside: avoid; } 364 | @page { margin: 0.5cm; } 365 | p, h2, h3 { orphans: 3; widows: 3; } 366 | h2, h3{ page-break-after: avoid; } 367 | hr { border-top:1px solid #000 !important;border-bottom:0 !important; } 368 | 369 | #documenter_sidebar{ 370 | -moz-box-shadow:none; 371 | -webkit-box-shadow:none; 372 | box-shadow:none; 373 | position:absolute; 374 | left:10px; 375 | top:0; 376 | width:100%; 377 | margin-top:500px; 378 | } 379 | #documenter_sidebar ul:before { content: "Table of Contents"; } 380 | 381 | #documenter_sidebar ul{ 382 | border:0 !important; 383 | } 384 | #documenter_sidebar ul li{ 385 | border:0 !important; 386 | text-align:left; 387 | } 388 | #documenter_sidebar ul li a{ 389 | border:0 !important; 390 | text-align:left; 391 | padding:4px; 392 | } 393 | #documenter_sidebar ul li a:hover{ 394 | border:0 !important; 395 | } 396 | #documenter_sidebar #documenter_logo{ 397 | display:none; 398 | } 399 | #documenter_sidebar #documenter_copyright{ 400 | display:none; 401 | } 402 | #documenter_content{ 403 | left:10px; 404 | } 405 | #documenter_cover{ 406 | margin-bottom:300px; 407 | } 408 | #documenter_content .warning{ 409 | background-image:url(img/warning.png) !important; 410 | background-repeat:no-repeat !important; 411 | background-position: 8px 11px !important; 412 | } 413 | #documenter_content .info{ 414 | background-image:url(img/info.png) !important; 415 | background-repeat:no-repeat !important; 416 | background-position: 8px 11px !important; 417 | } 418 | } -------------------------------------------------------------------------------- /verification/documentation/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Documentation - Sample FlexCode SDK PHP 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 74 | 75 | 76 | 77 |
78 | 79 | 90 | 92 |
93 |
94 |
95 |

FlexCode SDK

96 |

Sample Code For PHP

97 |
98 | 99 |
100 |
101 |
    102 |
  • latest update: 19/03/2015
  • 103 |
  • by: FlexCode SDK
  • 104 |
  • 105 |
106 |

Thank you for purchasing our product. If you have any questions that are beyond the scope of this help file, please feel free to contact us.

107 |
108 |
109 | 110 |

111 | Most of the questions are already answered in the FAQ's:
112 | https://www.apachefriends.org

113 |

114 | Linux installation refer to this following FAQs 115 | https://www.apachefriends.org/faq_linux.html

116 |

117 |

118 | Windows installation refer to this following FAQs 119 | https://www.apachefriends.org/faq_windows.html

120 |

121 |

122 | OS X installation refer to this following FAQs 123 | https://www.apachefriends.org/faq_osx.html

124 |

125 |
126 |
127 | 128 |
129 | /demo_flexcodesdk
130 |     (Sample Pages...)
131 |     /assets
132 |         /css
133 |         /font
134 |         /image
135 |         /js
136 |     /database
137 |     	demo_flexcodesdk.sql (Sql file import to your database server)
138 |     /include
139 |     	function.php (Customize PHP function for this sample)
140 |     	global.php (Customize global setting for this sample)
141 |     	head.php
142 | 	        
143 |

 

144 |
145 |
146 | 147 |

148 | After you download sample code from our website http://www.flexcodesdk.com/ extract the file into your web server and you can see the files looks like files structure in the page before. 149 | 150 |

151 | 152 |

153 |

154 |
155 |
156 | 157 |

158 |

    159 |
  1. 160 | Open global.php inside folder /include/global.php 161 |

    162 | 163 |

    164 |

    165 | $base_path customize this line with your sample code url.
    166 | $db_name customize this line with your database name.
    167 | $db_user customize this line with your database user.
    168 | $db_pass customize this line with your database user password.
    169 | $time_limit_reg customize this line with number (used for show the register interface for fingerprint).
    170 | $time_limit_ver customize this line with number (used for show the login interface for fingerprint).
    171 |

    172 |
  2. 173 |
174 |

175 |
176 |
177 | 178 |

179 | You can add and delete device in the device menu. 180 |

181 |

182 | 183 |

184 |
185 |
186 | 187 |

188 | You can add, delete, register fingerprint or login user menu in the User menu. 189 |

190 |
    191 |
  • Please set FlexCodeSDK.exe always run as admin
  • 192 |
  • FlexCodeSDK.exe located in the System folder of Windows (System32 for 32bit, SysWow64 for 64bit)
  • 193 |
  • Turn off the UAC (User Account Control) in Control Panel
  • 194 |
195 |

196 | Step by step fingerprint enrollment process : 197 |

198 |
    199 |
  1. Click Register button, it call external protocol FlexCodeSDK.exe and send the url to get enrollment paramaters
  2. 200 |
  3. FlexCodeSDK.exe will run and request the input parameters on the url (register.php).
  4. 201 |
  5. Web server respond the request 'echo "$user_id;SecurityKey;".$time_limit_reg.";".$base_path."process_register.php;".$base_path."getac.php";' 202 |
      203 |
    • $user_id is User ID
    • 204 |
    • SecurityKey is a strings to encrypt the template, please use the same SecuriKey when verify the template.
    • 205 |
    • $time_limit_reg is a numeric in second, how long the FlexCodeSDK.exe will run for enrollment process.
    • 206 |
    • $base_path."process_register.php;" is url to send the result of enrollment process.
    • 207 |
    • $base_path."getac.php" is url to get activation code, the activation code will store in device.ini file.
    • 208 |
    209 |
  6. 210 |
  7. User scanned the finger at least 4 times in given time, if not the enrollment process fails.
  8. 211 |
  9. If the enrollment process is success, FlexCodeSDK.exe send the template to the url $base_path."process_register.php;".
  10. 212 |
213 |

214 | 215 |

216 |
217 |
218 | 219 |

220 | You can login user in the Login menu. When the verication success, it will open a new page. 221 |

222 |
    223 |
  • Please set FlexCodeSDK.exe always run as admin
  • 224 |
  • FlexCodeSDK.exe located in the System folder of Windows (System32 for 32bit, SysWow64 for 64bit)
  • 225 |
  • Turn off the UAC (User Account Control) in Control Panel
  • 226 |
227 |

228 | Step by step fingerprint verification process : 229 |

230 |
    231 |
  1. Click Login button, it call external protocol FlexCodeSDK.exe and send the url to get verification paramaters
  2. 232 |
  3. FlexCodeSDK.exe will run and request the input parameters on the url (verification.php).
  4. 233 |
  5. Web server respond the request 'echo "$user_id;".$finger[0]['finger_data'].";SecurityKey;".$time_limit_ver.";".$base_path."process_verification.php;".$base_path."getac.php".";extraParams";' 234 |
      235 |
    • $user_id is User ID. FlexCodeSDK for web only support 1 to 1 verification.
    • 236 |
    • $finger[0]['finger_data'] is user's fingerprint template.
    • 237 |
    • SecurityKey is a strings to decrypt the template, please use the same SecuriKey when enroll the template.
    • 238 |
    • $time_limit_reg is a numeric in second, how long the FlexCodeSDK.exe will run for verification process.
    • 239 |
    • $base_path."process_verification.php;" is url to send the result of verification process.
    • 240 |
    • $base_path."getac.php" is url to get activation code, the activation code will store in device.ini file.
    • 241 |
    • extraParams is to give a Transaction ID, this ID is used to determine the verification is done for which transaction.
    • 242 |
    243 |
  6. 244 |
  7. User scanned the finger in given time, if not the verification process fails.
  8. 245 |
  9. If the verification process is success, FlexCodeSDK.exe send the template to the url $base_path."process_verification.php;".
  10. 246 |
247 |

248 | 249 |

250 |
251 |
252 | 253 |

254 | You can view the log information of login user in this Log menu. 255 |

256 |

257 | 258 |

259 |
260 |
261 | 262 | -------------------------------------------------------------------------------- /documentation/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | Documentation - Sample FlexCode SDK PHP 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 74 | 75 | 76 | 77 |
78 | 79 | 90 | 92 |
93 |
94 |
95 |

FlexCode SDK

96 |

Sample Code For PHP

97 |
98 | 99 |
100 |
101 |
    102 |
  • latest update: 19/03/2015
  • 103 |
  • by: FlexCode SDK
  • 104 |
  • 105 |
106 |

Thank you for purchasing our product. If you have any questions that are beyond the scope of this help file, please feel free to contact us.

107 |
108 |
109 | 110 |

111 | Most of the questions are already answered in the FAQ's:
112 | https://www.apachefriends.org

113 |

114 | Linux installation refer to this following FAQs 115 | https://www.apachefriends.org/faq_linux.html

116 |

117 |

118 | Windows installation refer to this following FAQs 119 | https://www.apachefriends.org/faq_windows.html

120 |

121 |

122 | OS X installation refer to this following FAQs 123 | https://www.apachefriends.org/faq_osx.html

124 |

125 |
126 |
127 | 128 |
129 | /demo_flexcodesdk
130 |     (Sample Pages...)
131 |     /assets
132 |         /css
133 |         /font
134 |         /image
135 |         /js
136 |     /database
137 |     	demo_flexcodesdk.sql (Sql file import to your database server)
138 |     /include
139 |     	function.php (Customize PHP function for this sample)
140 |     	global.php (Customize global setting for this sample)
141 |     	head.php
142 | 	        
143 |

 

144 |
145 |
146 | 147 |

148 | After you download sample code from our website http://www.flexcodesdk.com/ extract the file into your web server and you can see the files looks like files structure in the page before. 149 | 150 |

151 | 152 |

153 |

154 |
155 |
156 | 157 |

158 |

    159 |
  1. 160 | Open global.php inside folder /include/global.php 161 |

    162 | 163 |

    164 |

    165 | $base_path customize this line with your sample code url.
    166 | $db_name customize this line with your database name.
    167 | $db_user customize this line with your database user.
    168 | $db_pass customize this line with your database user password.
    169 | $time_limit_reg customize this line with number (used for show the register interface for fingerprint).
    170 | $time_limit_ver customize this line with number (used for show the login interface for fingerprint).
    171 |

    172 |
  2. 173 |
174 |

175 |
176 |
177 | 178 |

179 | You can add and delete device in the device menu. 180 |

181 |

182 | 183 |

184 |
185 |
186 | 187 |

188 | You can add, delete, register fingerprint or login user menu in the User menu. 189 |

190 |
    191 |
  • Please set FlexCodeSDK.exe always run as admin
  • 192 |
  • FlexCodeSDK.exe located in the System folder of Windows (System32 for 32bit, SysWow64 for 64bit)
  • 193 |
  • Turn off the UAC (User Account Control) in Control Panel
  • 194 |
195 |

196 | Step by step fingerprint enrollment process : 197 |

198 |
    199 |
  1. Click Register button, it call external protocol FlexCodeSDK.exe and send the url to get enrollment paramaters
  2. 200 |
  3. FlexCodeSDK.exe will run and request the input parameters on the url (register.php).
  4. 201 |
  5. Web server respond the request 'echo "$user_id;SecurityKey;".$time_limit_reg.";".$base_path."process_register.php;".$base_path."getac.php";' 202 |
      203 |
    • $user_id is User ID
    • 204 |
    • SecurityKey is a strings to encrypt the template, please use the same SecuriKey when verify the template.
    • 205 |
    • $time_limit_reg is a numeric in second, how long the FlexCodeSDK.exe will run for enrollment process.
    • 206 |
    • $base_path."process_register.php;" is url to send the result of enrollment process.
    • 207 |
    • $base_path."getac.php" is url to get activation code, the activation code will store in device.ini file.
    • 208 |
    209 |
  6. 210 |
  7. User scanned the finger at least 4 times in given time, if not the enrollment process fails.
  8. 211 |
  9. If the enrollment process is success, FlexCodeSDK.exe send the template to the url $base_path."process_register.php;".
  10. 212 |
  11. In $base_path."process_register.php;" you can tell FlexCodeSDK.exe to open a new page or not. Please see the image code below
  12. 213 |
214 |

215 | 216 |

217 |

218 | 219 |

220 |
221 |
222 | 223 |

224 | You can login user in the Login menu. When the verication success, it will open a new page. 225 |

226 |
    227 |
  • Please set FlexCodeSDK.exe always run as admin
  • 228 |
  • FlexCodeSDK.exe located in the System folder of Windows (System32 for 32bit, SysWow64 for 64bit)
  • 229 |
  • Turn off the UAC (User Account Control) in Control Panel
  • 230 |
231 |

232 | Step by step fingerprint verification process : 233 |

234 |
    235 |
  1. Click Login button, it call external protocol FlexCodeSDK.exe and send the url to get verification paramaters
  2. 236 |
  3. FlexCodeSDK.exe will run and request the input parameters on the url (verification.php).
  4. 237 |
  5. Web server respond the request 'echo "$user_id;".$finger[0]['finger_data'].";SecurityKey;".$time_limit_ver.";".$base_path."process_verification.php;".$base_path."getac.php".";extraParams";' 238 |
      239 |
    • $user_id is User ID. FlexCodeSDK for web only support 1 to 1 verification.
    • 240 |
    • $finger[0]['finger_data'] is user's fingerprint template.
    • 241 |
    • SecurityKey is a strings to decrypt the template, please use the same SecuriKey when enroll the template.
    • 242 |
    • $time_limit_reg is a numeric in second, how long the FlexCodeSDK.exe will run for verification process.
    • 243 |
    • $base_path."process_verification.php;" is url to send the result of verification process.
    • 244 |
    • $base_path."getac.php" is url to get activation code, the activation code will store in device.ini file.
    • 245 |
    • extraParams is to give a Transaction ID, this ID is used to determine the verification is done for which transaction.
    • 246 |
    247 |
  6. 248 |
  7. User scanned the finger in given time, if not the verification process fails.
  8. 249 |
  9. If the verification process is success, FlexCodeSDK.exe send the template to the url $base_path."process_verification.php;".
  10. 250 |
  11. In $base_path."process_verification.php;" you can tell FlexCodeSDK.exe to open a new page or not. Please see the image code below
  12. 251 |
252 |

253 | 254 |

255 |

256 | 257 |

258 |
259 |
260 | 261 |

262 | You can view the log information of login user in this Log menu. 263 |

264 |

265 | 266 |

267 |
268 |
269 | 270 | -------------------------------------------------------------------------------- /documentation/assets/js/google-code-prettify/prettify.js: -------------------------------------------------------------------------------- 1 | var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; 2 | (function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= 3 | [],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), 9 | l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, 10 | q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, 11 | q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, 12 | "");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), 13 | a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} 14 | for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], 18 | "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], 19 | H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], 20 | J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ 21 | I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), 22 | ["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", 23 | /^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), 24 | ["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", 25 | hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= 26 | !k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), 9 | l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, 10 | q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, 11 | q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, 12 | "");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), 13 | a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} 14 | for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], 18 | "catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], 19 | H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], 20 | J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ 21 | I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), 22 | ["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", 23 | /^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), 24 | ["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", 25 | hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= 26 | !k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p