Merhabalar,
WHMCS Licensing Addon modülünün kullanımı hakkında bilgi arıyorum.
Örnek olarak whmcs lisans modülünü kullanacağım. Lisans satın alındığında normal olarak müşteri lisans kodunu görecek. Bu lisans kodunu lisansli_dosya.php dosyasına yazacak. Lisans aktifse sayfa açılacak. Aktif değilse açılmayacak.
Bununla ilgili bir iki örnek kod gösterebilecek arkadaş varmı? Teşekkürler.
WHMCS Licensing Addon
14
●3.761
- 30-09-2014, 12:03:53Üyeliği durduruldu
if ($results['status'] == 'Active') { Kodlarınız }<?php if (!file_exists( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'lisans.php' )) { exit( 'lisans.php dosyası bulunamadı. (' . php_sapi_name( ) . ')' . ( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'lisans.php' ) ); } require( dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'lisans.php' ); $licensekey = $whmcs_licensekey; $localkey = whmcs_getlocalkey( ); $whmcsurl = 'http://www.domainadi.com'; $licensing_secret_key = '123456789asd'; $check_token = time( ) . md5( mt_rand( 1000000000, 9999999999 ) . $licensekey ); $checkdate = date( 'Ymd' ); $usersip = (isset( $_SERVER['SERVER_ADDR'] ) ? $_SERVER['SERVER_ADDR'] : $_SERVER['LOCAL_ADDR']); $localkeydays = 1; $allowcheckfaildays = 1; $localkeyvalid = false; if ($localkey) { $localkey = str_replace( '', '', $localkey ); $localdata = substr( $localkey, 0, strlen( $localkey ) - 32 ); $md5hash = substr( $localkey, strlen( $localkey ) - 32 ); if ($md5hash == md5( $localdata . $licensing_secret_key )) { $localdata = strrev( $localdata ); $md5hash = substr( $localdata, 0, 32 ); $localdata = substr( $localdata, 32 ); $localdata = base64_decode( $localdata ); $localkeyresults = unserialize( $localdata ); $originalcheckdate = $localkeyresults['checkdate']; if ($md5hash == md5( $originalcheckdate . $licensing_secret_key )) { $localexpiry = date( 'Ymd', mktime( 0, 0, 0, date( 'm' ), date( 'd' ) - $localkeydays, date( 'Y' ) ) ); if ($localexpiry < $originalcheckdate) { $localkeyvalid = true; $results = $localkeyresults; $validdomains = explode( ',', $results['validdomain'] ); if (!in_array( $_SERVER['SERVER_NAME'], $validdomains )) { $localkeyvalid = false; $localkeyresults['status'] = 'Invalid'; $results = array( ); } $validips = explode( ',', $results['validip'] ); if (!in_array( $usersip, $validips )) { $localkeyvalid = false; $localkeyresults['status'] = 'Invalid'; $results = array( ); } if ($results['validdirectory'] != dirname( __FILE__ )) { $localkeyvalid = false; $localkeyresults['status'] = 'Invalid'; $results = array( ); } } } } } if (!$localkeyvalid) { $postfields['licensekey'] = $licensekey; $postfields['domain'] = $_SERVER['SERVER_NAME']; $postfields['ip'] = $usersip; $postfields['dir'] = dirname( __FILE__ ); if ($check_token) { $postfields['check_token'] = $check_token; } if (function_exists( 'curl_exec' )) { $ch = curl_init( ); curl_setopt( $ch, CURLOPT_URL, $whmcsurl . 'modules/servers/licensing/verify.php' ); curl_setopt( $ch, CURLOPT_POST, 1 ); curl_setopt( $ch, CURLOPT_POSTFIELDS, $postfields ); curl_setopt( $ch, CURLOPT_TIMEOUT, 30 ); curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); $data = curl_exec( $ch ); curl_close( $ch ); } else { $fp = fsockopen( $whmcsurl, 80, $errno, $errstr, 5 ); if ($fp) { $querystring = ''; foreach ($postfields as $k => $v) { $querystring .= '' . $k . '=' . urlencode( $v ) . '&'; } $header = 'POST ' . $whmcsurl . 'modules/servers/licensing/verify.php HTTP/1.0 '; $header .= 'Host: ' . $whmcsurl . ' '; $header .= 'Content-type: application/x-www-form-urlencoded '; $header .= 'Content-length: ' . @strlen( $querystring ) . ' '; $header .= 'Connection: close '; $header .= $querystring; $data = ''; @stream_set_timeout( $fp, 20 ); @fputs( $fp, $header ); $status = @socket_get_status( $fp ); while (( !@feof( $fp ) && $status )) { $data .= @fgets( $fp, 1024 ); $status = @socket_get_status( $fp ); } @fclose( $fp ); } } if (!$data) { $localexpiry = date( 'Ymd', mktime( 0, 0, 0, date( 'm' ), date( 'd' ) - ( $localkeydays + $allowcheckfaildays ), date( 'Y' ) ) ); if ($localexpiry < $originalcheckdate) { $results = $localkeyresults; } else { $results['status'] = 'Invalid'; $results['description'] = 'Remote Check Failed'; $lerror = 'License Invalid: ' . $results['description']; return false; } } preg_match_all( '/<(.*?)>([^<]+)<\/\1>/i', $data, $matches ); $results = array( ); foreach ($matches[1] as $k => $v) { $results[$v] = $matches[2][$k]; } if ($results['md5hash']) { if ($results['md5hash'] != md5( $licensing_secret_key . $check_token )) { $results['status'] = 'Invalid'; $results['description'] = 'MD5 Checksum Verification Failed'; $lerror = 'License Invalid: ' . $results['description']; return false; } } if ($results['status'] == 'Active') { $results['checkdate'] = $checkdate; $data_encoded = serialize( $results ); $data_encoded = base64_encode( $data_encoded ); $data_encoded = md5( $checkdate . $licensing_secret_key ) . $data_encoded; $data_encoded = strrev( $data_encoded ); $data_encoded = $data_encoded . md5( $data_encoded . $licensing_secret_key ); $data_encoded = wordwrap( $data_encoded, 80, '', true ); $results['localkey'] = $data_encoded; } $results['remotecheck'] = true; } unset( $postfields ); unset( $data ); unset( $matches ); unset( $whmcsurl ); unset( $licensing_secret_key ); unset( $checkdate ); unset( $usersip ); unset( $localkeydays ); unset( $allowcheckfaildays ); unset( $md5hash ); if (( isset( $results['localkey'] ) && $results['localkey'] != '' )) { whmcs_savelocalkey( $results['localkey'] ); } if ($results['status'] == 'Active') { return true; } if ($results['status'] == 'Invalid') { $lerror = 'Lisansınız Geçersiz.'; return null; } if ($results['status'] == 'Expired') { $lerror = 'Lisans Süreniz Doldu.'; return null; } if ($results['status'] == 'Suspended') { $lerror = 'Lisansınız Askıya Alındı.'; return null; }lisans.php dosyası
<?php $whmcs_licensekey="xxxxxxxxxxxxxxxxxxxx"; ?>
- 01-10-2014, 22:19:19Üyeliği durdurulduSelamlar,
FTP'den addons/servers/licensing klasörüne girerseniz,
Orada example gibisinden bir dosya olacaktır, onun içine açarsanız onun içinde lisans sisteminin kodları yazmaktadır. Biraz ingilizceniz varsa sistemin kullanımı içinde yazmaktadır. - 02-10-2014, 16:29:13Hala araştırıyorum..Allied adlı üyeden alıntı: mesajı görüntüle
--R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 16:29:13 -->-> Daha önceki mesaj 14:56:53 --
Aaşağıdaki $localkey example örnek dosyadakinin aynısı. Bu değeri nerden nasıl oluşturuyor. Yoksa localkey sabitmidir.furkanturkyilma adlı üyeden alıntı: mesajı görüntüle
$localkey = '9tjIxIzNwgDMwIjI6gjOztjIlRXYkt2Ylh2YioTO6M3OicmbpNnblNWasx1cyVmdyV2ccNXZsVHZv1GX zNWbodHXlNmc192czNWbodHXzN2bkRHacBFUNFEWcNHduVWb1N2bExFd0FWTcNnclNXVcpzQioDM4ozc 7ISey9GdjVmcpRGZpxWY2JiO0EjOztjIx4CMuAjL3ITMioTO6M3OiAXaklGbhZnI6cjOztjI0N3boxWY j9Gbuc3d3xCdz9GasF2YvxmI6MjM6M3Oi4Wah12bkRWasFmdioTMxozc7ISeshGdu9WTiozN6M3OiUGb jl3Yn5WasxWaiJiOyEjOztjI3ATL4ATL4ADMyIiOwEjOztjIlRXYkVWdkRHel5mI6ETM6M3OicDMtcDM tgDMwIjI6ATM6M3OiUGdhR2ZlJnI6cjOztjIlNXYlxEI5xGa052bNByUD1ESXJiO5EjOztjIl1WYuR3Y 1R2byBnI6ETM6M3OicjI6EjOztjIklGdjVHZvJHcioTO6M3Oi02bj5ycj1Ga3BEd0FWbioDNxozc7ICb pFWblJiO1ozc7IyUD1ESXBCd0FWTioDMxozc7ISZtFmbkVmclR3cpdWZyJiO0EjOztjIlZXa0NWQiojN 6M3OiMXd0FGdzJiO2ozc7pjMxoTY8baca0885830a33725148e94e693f3f073294c0558d38e31f844 c5e399e3c16a';
- 02-10-2014, 16:40:16Üyeliği durdurulduBildiğim kadarıyla, örneğin siteniz kapandı ve lisans sisteminize erişim sağlanamıyor. Sonrasında eğer lisans sistemi girilen kodu doğrularsa sistem size bir local key veriyor orada büyük ihtimalle işte kaç günde bir kontrol edilsin vs gibisinden bir değişken görmüşsünüzdür. O değişkenin içeriğine göre içine bir tarih giriyor ve o tarihten o tarihe kadar localkey sayesinde lisans sistemi kontrol yapmıyor. Örneğin localkey in süresi bitti ve yeniden doğrulama yapıcak onun için tekrar orada fail bilmem gibisinden bir değişken var o değişkende hata aldıktan sonra sistem kaç gün sonra deneme yapsın diye. Benim bildiğim bu, anladıklarım bu daha doğrusu. Ama farklı bir amacı varsa bizide bilgilendirsin.adalim adlı üyeden alıntı: mesajı görüntüle