it审计中网络游戏的收入确认如何计算

Continue Read..
网游收入计算,财务方面需要注意的地方。

总结起来有以下几种:

1、点卡卖出即确认
2、卖出后客户充值后确认
3、卖出后、充值后,消费了确认
4、卖出后、充值了、消费了,按照道具在使用期内分期确认收入。

一般消耗性道具(如红蓝药),采用3
永久性道具采用4,分期确认收入,售价/游戏平均玩家寿命=每天收入
虽然在程序上来说这样很蛋疼,但是IT审计必须这么搞。


可参考盛大、九城、征途什么的审计报告,这些都是纳斯达克的上市公司
参考资料:
http://www.zhihu.com/question/22366148
http://www.thxflt.com/forum.php?mod=viewthread&tid=37371&extra=&page=1

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

js 获取当前时间

Continue Read..
var d = new Date()
var vYear = d.getFullYear()
var vMon = d.getMonth() + 1
var vDay = d.getDate()
var h = d.getHours(); 
var m = d.getMinutes(); 
var se = d.getSeconds(); 
s=vYear+(vMon<10 ? "0" + vMon : vMon)+(vDay<10 ? "0"+ vDay : vDay)+(h<10 ? "0"+ h : h)+(m<10 ? "0" + m : m)+(se<10 ? "0" +se : se);
document.write(s);//输出时间

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

【Mysql】使用DBExportDoc V1.0 For MySQL生成数据库字典

Continue Read..

1.进入系统控制面板,打开管理工具,然后打开数据源

点击查看原图

2.点击添加选择 Mysql ODBC 5.3 Unicode  Driver

点击查看原图

 

点击查看原图

 

这个是前期配置

 

 

下面打开 我附件里面的 DBExportDoc V1.0 For MySQL.doc文件  

点击查看原图

 

点击连接数据库  新建连接 选择 ODBC 

点击查看原图点击查看原图

 

  测试通过后 点击确定 然后回到 新建连接的那个框  点击连接

点击查看原图

 

选择要导出的数据表 然后点击导出 就OK了 

 

 

这里要注意  数据库里面写了注释 导出的时候才会有注释

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

jquery 防拖拽、CTR+V、CSS设置输入法等

Continue Read..
    $.fn.numAndLetter = function() {
            $(this).keypress(function(event) {
                var keyCode = event.which;
                if (keyCode != 8 & keyCode != 0) {
                    if (!((keyCode >= 48 && keyCode <= 57) ||(keyCode>=65 &&keyCode<=90)||((keyCode>=97 &&keyCode<=122)))) {
                        return false;
                    }
                }

            }).bind("paste", function(e) { //CTR+V事件处理 

                return false;
            }).bind("dragenter", function() { //拖拽事件处理 
                return false;
            }).css({ "ime-mode": "disabled" }); //CSS设置输入法不可用
        };


$txtSPDM.numAndLetter();

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

【php】二维码扫描登陆接口

Continue Read..

先来张流程图吧  自己画的 有问题的请指出

点击查看原图

 

思路

1,有2个域名   demo.sm.com(二维码页面)  apd.sm.com (接口)

2,打开demo.sm.com的时候 先调接口生成一个唯一的 uuid  然后 在调用生成二维码的的接口 用get方式请求 并将uuid传过去

3,demo.sm.com会一直ajax jsonp 请求接口  会返回一个状态值 根据状态值来处理页面逻辑

4,app端扫这个二维码  然后调用绑定接口 将app登陆的 uid  和 uuid绑定  为了防止注入等  会加密一个字符串一起给接口  接口会来判断 这个提交的数据是否来源正常 (参考 支付宝等)

5,app端绑定之后 demo.sm.com这时候会有返回值  然后修改页面状态 比如像微信那样 显示用户图片 等待app端确定

6,app端会出现页面 里面有一个确定按钮  当用后点击之后 整个流程结束

 

以上只是初步测试  最后最终登陆 感觉还需要加一道验证 防止注入

 

 

 

代码,文档,数据库一起打包放附件了 用YII2写的 一些组件就不放上来了 如redis等

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

jquery ajax两种写法

Continue Read..

[该日志已设置加密,请点击标题输入密码访问]

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

jquery bind,live,delegate区别/用法

Continue Read..

[该日志已设置加密,请点击标题输入密码访问]

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

php的AES/ECB/PKCS5Padding加密

Continue Read..

例子如下

<?php
class AES{
	//AES加密类型有很多
	//这个类实现的是AES/ECB/PKCS5Padding加密类型
	function AES_PKCS5_ENCRYPT($text, $key){
		$alg = MCRYPT_RIJNDAEL_128; // AES
		$mode = MCRYPT_MODE_ECB; // not recommended unless used with OTP

		$iv_size = mcrypt_get_iv_size($alg, $mode);
		$block_size = mcrypt_get_block_size($alg, $mode);
		$iv = mcrypt_create_iv($iv_size, MCRYPT_DEV_URANDOM); // pull from /dev/urandom
		$input = $this->pkcs5_pad($text, $block_size);
		$crypttext = mcrypt_encrypt($alg, $key, $input, $mode, $iv);
		return $crypttext;
	}

	public function pkcs5_pad($text, $blocksize) {
	    $pad = $blocksize - (strlen($text) % $blocksize);
	    return $text . str_repeat(chr($pad), $pad);
	}
}

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

【PHP】cookie不刷新生效

Continue Read..
// PHP COOKIE设置函数立即生效。
function cookie ( $var , $value = '' , $time = 0 , $path = '' , $domain = '' ,$secure=false) {
$_COOKIE [ $var ] = $value;
if ( is_array ( $value ) ) {
foreach ( $value as $k => $v ) {
setcookie ( $var . '[' . $k . ']' , $v , $time , $path , $domain , $secure );
}
} else {
setcookie ( $var , $value , $time , $path , $domain , $secure );
}
}

声明:此文系舞林cuznwww.wulinlw.org)原创稿件,转载请保留版权

【PHP】加密解密函数

Continue Read..

1、非常给力的authcode加密函数,Discuz!经典代码如下:

  1. function authcode($string$operation = 'DECODE'$key = ''$expiry = 0) {   
  2.     // 动态密匙长度,相同的明文会生成不同密文就是依靠动态密匙    
  3.     $ckey_length = 4;    
  4.         
  5.     // 密匙    
  6.     $key = md5($key ? $key : $GLOBALS['discuz_auth_key']);    
  7.         
  8.     // 密匙a会参与加解密    
  9.     $keya = md5(substr($key, 0, 16));    
  10.     // 密匙b会用来做数据完整性验证    
  11.     $keyb = md5(substr($key, 16, 16));    
  12.     // 密匙c用于变化生成的密文    
  13.     $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length):  
  14. substr(md5(microtime()), -$ckey_length)) : '';    
  15.     // 参与运算的密匙    
  16.     $cryptkey = $keya.md5($keya.$keyc);    
  17.     $key_length = strlen($cryptkey);    
  18.     // 明文,前10位用来保存时间戳,解密时验证数据有效性,10到26位用来保存$keyb(密匙b),  
  19.     //解密时会通过这个密匙验证数据完整性    
  20.     // 如果是解码的话,会从第$ckey_length位开始,因为密文前$ckey_length位保存 动态密匙,以保证解密正确    
  21.     $string = $operation == 'DECODE' ? base64_decode(substr($string$ckey_length)) :   
  22. sprintf('%010d'$expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;    
  23.     $string_length = strlen($string);    
  24.     $result = '';    
  25.     $box = range(0, 255);    
  26.     $rndkey = array();    
  27.     // 产生密匙簿    
  28.     for($i = 0; $i <= 255; $i++) {    
  29.         $rndkey[$i] = ord($cryptkey[$i % $key_length]);    
  30.     }    
  31.     // 用固定的算法,打乱密匙簿,增加随机性,好像很复杂,实际上对并不会增加密文的强度    
  32.     for($j = $i = 0; $i < 256; $i++) {    
  33.         $j = ($j + $box[$i] + $rndkey[$i]) % 256;    
  34.         $tmp = $box[$i];    
  35.         $box[$i] = $box[$j];    
  36.         $box[$j] = $tmp;    
  37.     }    
  38.     // 核心加解密部分    
  39.     for($a = $j = $i = 0; $i < $string_length$i++) {    
  40.         $a = ($a + 1) % 256;    
  41.         $j = ($j + $box[$a]) % 256;    
  42.         $tmp = $box[$a];    
  43.         $box[$a] = $box[$j];    
  44.         $box[$j] = $tmp;    
  45.         // 从密匙簿得出密匙进行异或,再转成字符    
  46.         $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));    
  47.     }    
  48.     if($operation == 'DECODE') {   
  49.         // 验证数据有效性,请看未加密明文的格式    
  50.         if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) &&   
  51. substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {   
  52.             return substr($result, 26);    
  53.         } else {    
  54.             return '';    
  55.         } //开源代码phpfensi.com 
  56.     } else {    
  57.         // 把动态密匙保存在密文里,这也是为什么同样的明文,生产不同密文后能解密的原因    
  58.         // 因为加密后的密文可能是一些特殊字符,复制过程可能会丢失,所以用base64编码    
  59.         return $keyc.str_replace('='''base64_encode($result));    
  60.     }    

函数authcode($string, $operation, $key, $expiry)中的$string:字符串,明文或密文,$operation:DECODE表示解密,其它表示加密,$key:密匙;$expiry:密文有效期.

PHP函数的用法如下:

  1. $str = 'abcdef';  
  2. $key = 'www.phpfensi.com';  
  3. echo authcode($str,'ENCODE',$key,0); //加密  
  4. $str = '56f4yER1DI2WTzWMqsfPpS9hwyoJnFP2MpC8SOhRrxO7BOk';  
  5. echo authcode($str,'DECODE',$key,0); //解密 

2、加解密函数encrypt(),代码如下:

  1. function encrypt($string,$operation,$key=''){  
  2.     $key=md5($key);  
  3.     $key_length=strlen($key);  
  4.       $string=$operation=='D'?base64_decode($string):substr(md5($string.$key),0,8).$string;  
  5.     $string_length=strlen($string);  
  6.     $rndkey=$box=array();  
  7.     $result='';  
  8.     for($i=0;$i<=255;$i++){  
  9.            $rndkey[$i]=ord($key[$i%$key_length]);  
  10.         $box[$i]=$i;  
  11.     }  
  12.     for($j=$i=0;$i<256;$i++){  
  13.         $j=($j+$box[$i]+$rndkey[$i])%256;  
  14.         $tmp=$box[$i];  
  15.         $box[$i]=$box[$j];  
  16.         $box[$j]=$tmp;  
  17.     }  
  18.     for($a=$j=$i=0;$i<$string_length;$i++){  
  19.         $a=($a+1)%256;  
  20.         $j=($j+$box[$a])%256;  
  21.         $tmp=$box[$a];  
  22.         $box[$a]=$box[$j];  
  23.         $box[$j]=$tmp;  
  24.         $result.=chr(ord($string[$i])^($box[($box[$a]+$box[$j])%256]));  
  25.     }  
  26.     if($operation=='D'){  
  27.         if(substr($result,0,8)==substr(md5(substr($result,8).$key),0,8)){  
  28.             return substr($result,8);  
  29.         }else{  
  30.             return'';  
  31.         } //开源代码phpfensi.com 
  32.     }else{  
  33.         return str_replace('=','',base64_encode($result));  
  34.     }  

函数encrypt($string,$operation,$key)中$string:需要加密解密的字符串;$operation:判断是加密还是解密,E表示加密,D表示解密;$key:密匙。

用法代码如下:

  1. $str = 'abc';  
  2. $key = 'www.phpfensi.com';  
  3. $token = encrypt($str'E'$key);  
  4. echo '加密:'.encrypt($str'E'$key);  
  5. echo '解密:'.encrypt($str'D'$key);