> 백엔드 개발 > PHP 튜토리얼 > 기간에 대한 PHP 복권 프로그램 코드

기간에 대한 PHP 복권 프로그램 코드

WBOY
풀어 주다: 2016-07-25 08:58:42
원래의
1320명이 탐색했습니다.
  1. require_once(APP_ROOT . "./class/class_lib.php")
  2. require_once libfile( 'class/StoreProcs' );
  3. pc_base::load_app_class('table_sub','',0);
  4. /**
  5. * 큰 회전식 슬라이드
  6. * @author 관리자
  7. *
  8. */
  9. class lib_dzp_lottery는 app_lib를 확장합니다. {
  10. /**
  11. * 경품 목록
  12. */
  13. public $lottery = 'activity_lyq_lottery';
  14. /**
  15. * 상품 로그 테이블
  16. */
  17. public $lottery_log = 'activity_lyq_lottery_log';
  18. /**
  19. * n개 경품
  20. */
  21. private $level = 배열 ();
  22. /**
  23. * 경품 안내
  24. */
  25. 비공개 $lotteryArray = array()
  26. /***
  27. * 임의의 숫자 끝자리
  28. */
  29. 비공개 $max = 30000; *
  30. * 카테고리 true: 기본값 false: Palm Suzu
  31. */
  32. 비공개 $type=true;
  33. /**
  34. * 프로페셔널 계정 당첨
  35. */
  36. 비공개 $tel_zy=false
  37. /**
  38. * 구성 읽기
  39. */
  40. 공개 function load_setting() {
  41. $data=getcache('lyqdzp_setting');
  42. define('TIME', time()) //현재 시간
  43. define('L_START', strtotime($data[ 'l_start'])); //등록 시작 시간
  44. define('L_END', strtotime($data['l_end'])) //등록 종료 시간, -1은 어제 23:59:59를 의미합니다.
  45. define('L_DAY_START',$data['l_day_start']); //매일 시작 시간
  46. define('L_DAY_END', $data['l_day_end']) //매일 종료 시간
  47. define(' L_DAY_CISHU', $data['l_day_cishu']);//일별 획득 상품 수
  48. define('L_CISHU', $data['l_cishu']);//획득한 총 상품 수
  49. define('L_MIN' , 20);//최소 LIF 코인
  50. define('L_LFB', $data['l_lfb']);//LIF 코인 줄이기
  51. define('L_ZY', $data ['l_zy'] ])); //빈 경품 확률
  52. $host='www.****.com'; //기존 네트워크
  53. if($_SERVER['HTTP_HOST']= ='221.*** *0'){
  54. $host='221.*****'; //테스트 머신
  55. }elseif($_SERVER['HTTP_HOST']=='125. com'){
  56. $host='125life.com';//Local
  57. }elseif(strpos($_SERVER['HTTP_HOST'],'192.168.')==0){
  58. $host =$_SERVER['HTTP_HOST' ].'/125e.com';//Local
  59. }
  60. define('L_SITE', 'http://'.$host.'/'); //추가 / 도메인 이름 끝에
  61. define ('L_URL', L_SITE.'index.php');//접속 주소
  62. //플래시 주소로만 접속 가능
  63. $s =L_SITE.'flash/dzp/i.swf';
  64. if(preg_replace('/swf.*$/','swf',$_SERVER['HTTP_REFERER'])!=$s&&$this-> type){
  65. exit('충분하시다면 공식 채널을 통해 추첨해주세요!')
  66. $this->load();
  67. /**
  68. * 블랙리스트
  69. */
  70. private $heimingdan = array()
  71. /**
  72. * 상품 구성 읽기
  73. */
  74. public function load() {
  75. $this-> setlottery ();
  76. $this->heimingdan = getcache ( 'tel', 'blanklist' )
  77. }
  78. 비공개 함수 setlottery() {
  79. $time=strtotime(date('Y-m -d',TIME));
  80. $sql = " u.*";
  81. $sql .= ", ( " 에서 COUNT(l.lotteryid) 선택( $this-> ;lottery_log ) . " AS l 여기서 u.lotteryid=l.lotteryid 및 l.isinning='1')as num "
  82. $sql .= " from " . ) . " AS u ";
  83. $sql .= " 및 u.isdisable='0' " 및 u.time_start< ='$time' ";
  84. $sql .= " 및 u.time_end>='$time' ";
  85. $sql .= " ORDER BY u.listorder ";
  86. $d = DB: :fetch_all ( $sql );
  87. $sum = 0;
  88. foreach ( $d as $r ) {
  89. $r ['sum_over'] = intval ( $r ['sum'] ) - intval ( $r ['num'] );
  90. if ( $r ['sum'] > 0) {
  91. $sum = $r ['sum']
  92. }
  93. $r ['msg']=str_replace('{name}', $ r['name'],$r['msg'])
  94. $this->lotteryArray [$r ['lotteryid']] = $r;
  95. }
  96. if($sum< 100) $sum=1000;
  97. $m = 1; $probability = 0
  98. $newsum=0; /80% 빈 상금 20% 상
  99. $this-> ;max = $sum $sum * (L_KONGJIANG/100) / ((100-L_KONGJIANG)/100
  100. foreach ( $this->lotteryArray $r ) {
  101. if ($r ['sum '] > 0) {
  102. $newsum=$r ['sum']
  103. if($r['probability']> 0){
  104. $probability=0;
  105. $ 확률=ceil($r ['sum']*100/$r['probability'])
  106. if($probability>0); 🎜>$newsum=$probability;
  107. }
  108. }
  109. $this->level [$r ['lotteryid']] ['start'] = $m
  110. $this-> ;level [$r ['lotteryid']] ['end' ] = $m $newsum
  111. $m = $m $r ['sum']
  112. }
  113. }
  114. }
  115. /**
  116. * 사용자의 경품 당첨 여부 감지 0 참여해 주셔서 감사합니다. 다른 사용자는 경품 데이터를 반환합니다.
  117. * @param array $user array(uid,tel,ip)
  118. */
  119. 공개 함수 검사($user) {
  120. if (intval ( $user ['uid'] ) < 1) {
  121. //로그인되지 않음
  122. return 0;
  123. }
  124. if(intval (TIME)//일찍 오셨고 이벤트가 아직 시작되지 않았습니다!
  125. return -21;
  126. }
  127. if(intval(TIME)>intval(L_END)){
  128. //이벤트 시간이 지났네요 정말 죄송합니다 감사합니다!
  129. return -22;
  130. }
  131. if ($this->get_user_lfb ( $user ['uid'] ) < L_MIN) {
  132. //$this->credit ( $user ['uid'], -11, $logid );
  133. return -11; //Raffles 잔액이 부족합니다
  134. }
  135. $data = array(
  136. 'uid' => ; $user ['uid'],
  137. 'tel' => $user ['tel'],
  138. 'ip' => $user ['ip'],
  139. 'addtime' = > time ()
  140. )
  141. $logid = DB::insert ( $this->lottery_log, $data, true )
  142. //매일 사용자 확인 당첨된 상금
  143. if ($this->get_lottery ( $user ['uid'], strtotime ( date ( 'Y-m-d', TIME ) ), strtotime ( " 1day", strtotime ( date ( 'Y-m - d', TIME ) ) ), true ) >= L_DAY_CISHU) {
  144. $this->credit ( $user ['uid'], -12, $logid )
  145. //죄송합니다. 이번엔 아무것도 아니야!
  146. return -12;
  147. }
  148. //사용자가 획득한 모든 상품 수를 확인
  149. if ($this->get_lottery ( $user ['uid'], 0, 0, true ) > ; L_CISHU&&L_CISHU>0) {
  150. $this->credit ( $user ['uid'], -12, $logid )
  151. //아쉽게도 이번에는 아무 것도 그리지 않았습니다!
  152. return -15;
  153. }
  154. //블랙리스트 감지, 확률 설정
  155. if ($this->checkhei ( $user ['tel'] ) > 0) {
  156. $ this->credit ( $user ['uid'], -13, $logid )
  157. //안타깝게도 이번에는 아무 것도 그리지 않았습니다!
  158. return -13;
  159. }
  160. $lotteryid = $this->choujiang()
  161. $this->credit ( $user ['uid'], $lotteryid<1?$ lotteryid:0, $logid, $lotteryid ,$this->hao)
  162. if ($lotteryid > 0) {
  163. return $this->lotteryArray [$lotteryid]
  164. } else {
  165. return -4;
  166. }
  167. //-1개의 상품이 배포되었습니다
  168. //-이 기간 동안 2개의 상품이 배포되었습니다
  169. //-3 상품이 배포되지 않았습니다
  170. // -4 상품에 문제가 있습니다
  171. //-11 RAF 잔액이 부족합니다
  172. //-12 아쉽게도 이번에는 아무 것도 그리지 못했습니다!
  173. //-블랙리스트 13에 아쉽게도 이번에는 아무것도 그리지 않으셨네요!
  174. //-14 당첨된 전문 계정은 높은 상품에 대해 이야기하는 것이 금지됩니다
  175. //-15가 yizhong의 총 상품 수를 초과했습니다
  176. //-16 Zhangsu가 잘못된 휴대폰 번호를 보냈습니다
  177. //-21 일찍 오셨네요 알겠습니다. 이벤트가 아직 시작되지 않았습니다!
  178. //-22 이벤트 시간이 지났네요 정말 죄송합니다 감사합니다!
  179. //-23죄송합니다 지금은 이벤트 시간이 아니고 매일 이벤트 시간입니다
  180. }
  181. /**
  182. * 표시
  183. * @paramknown_type $data
  184. */
  185. 공개행사($data){
  186. $ok= 0;//3 우승 상
  187. $zz=0;//룰렛 등급
  188. $result='';//상품 이름
  189. $lotteryid=0;//상품 ID
  190. if(is_array( $data)){
  191. $ok=3;
  192. $result=$data['msg']
  193. $zz=$data['angle'] L_QUANSHU*360; 🎜>$lotteryid= $data['lotteryid'];
  194. }else{
  195. $m=''
  196. switch($data){
  197. case 0:{
  198. $m= '먼저 로그인을 해주세요! ';
  199. }break;
  200. case -11:{
  201. $m= 'LIFCO 잔액이 부족합니다! ';
  202. }break;
  203. case -12:{
  204. $m= '안타깝게도 이번에는 아무 것도 그리지 않았습니다! ';
  205. }break;
  206. case -21:{
  207. $m= '일찍 오셨고 이벤트가 아직 시작되지 않았습니다! ';
  208. }break;
  209. case -22:{
  210. $m= '이벤트 시간이 지났습니다. 정말 죄송합니다. 감사합니다! ';
  211. }break;
  212. case -23:{
  213. $m= '죄송합니다. 지금은 이벤트 시간이 아닙니다. 이벤트 시간은 매일입니다.'.L_DAY_START.':00-'.L_DAY_END .':00' ;
  214. }break;
  215. default:{
  216. $m= '안타깝게도 이번에는 아무 것도 그리지 않았습니다!';
  217. }휴식;
  218. }
  219. $result=$m;
  220. $ok=3;//3中奖
  221. $zz=360 L_QUANSHU*360;//再接再厉
  222. }
  223. header("만료일:1997년 7월 26일 월요일:00:00GMT");
  224. header("캐시 제어:캐시 없음, 재검증해야 함");
  225. header("Pragma:no-cache");
  226. header("Content-type:text/html;charset=utf-8");
  227. if(!$this->type){
  228. echo json_encode(array('return'=>$lotteryid,
  229. 'msg'=>$result));
  230. }else{
  231. echo ''."n";
  232. echo '<선물>'."n";
  233. echo ''."n";
  234. echo ''."n";
  235. }
  236. 종료;
  237. }
  238. /**
  239. *복권번호
  240. */
  241. 비공개 $hao=0;
  242. /**
  243. * 추첨이 시작됩니다
  244. */
  245. 비공개 함수 choujiang() {
  246. $j = 0;
  247. $lotteryid = 0;
  248. $j = mt_rand(1, $this->max);
  249. $this->hao=$j;
  250. foreach ( $this->level as $k => $r ) {
  251. if ($r ['start'] <= $j && $r ['end'] > $j ) {
  252. $lotteryid = $k;
  253. 휴식;
  254. }
  255. }
  256. $d = array(
  257. 1 => array(
  258. 'time' => strtotime ( date ( 'Y-m-d 00:00:00', TIME ) ) ,
  259. 'time_end' => strtotime ( 날짜 ( '연월일 07:59:59', TIME ) )
  260. )
  261. );
  262. for ($i=2;$i<=17;$i ){
  263. $d[$i]=array(
  264. 'time' => strtotime ( date ( 'Y-m-d'.( $i 6).':00:00', TIME ) ),
  265. 'time_end' => strtotime ( 날짜 ( 'Y-m-d'.($i 6).':59:59', TIME ) )
  266. );
  267. }
  268. if($lotteryid>0){
  269. $l=$this->lotteryArray [$lotteryid];
  270. $sql = "에서 count(*) m 선택 " . DB::table ( $this->lottery_log );
  271. $sql .= " where lotteryid='$lotteryid' ";
  272. $s= intval ( DB::result_first ( $sql ) );
  273. $sum_over=$l['sum']-$s;
  274. if($sum_over>0){
  275. //本时段 奖product数
  276. $sum=0;
  277. foreach($d as $k=>$r){
  278. if(TIME>=$r['time']&&TIME<=$r['time_end']){
  279. if($ l['time_'.$k]>0){//个数限제
  280. $sum=$this->get_lottery_id(0,$r['time'],$r['time_end'] 1 ,$복권ID);
  281. if($sum>=$l['time_'.$k]){
  282. //本时段奖product已玩
  283. $lotteryid=-2;
  284. 휴식;
  285. }
  286. }elseif ($l['time_'.$k]==0){
  287. //불发奖품
  288. $lotteryid=-3;
  289. 휴식;
  290. }else{
  291. //-1 불제제
  292. }
  293. }
  294. }
  295. if($this->tel_zy && $lotteryid>0&&$lotteryid<4 ){
  296. $lotteryid=-14;
  297. }
  298. }else{
  299. //奖product已发完
  300. $lotteryid=-1;
  301. }
  302. }else{
  303. //奖product有问题
  304. $lotteryid=-4;
  305. }
  306. $lotteryid를 반환합니다.
  307. }
  308. /**
  309. * 블랙리스트 및 일반 사용자 감지, 확률
  310. * @param string $tel
  311. * @return이 1보다 크면 이번에는 로또가 금지됨을 의미
  312. */
  313. 비공개 함수 checkhei($tel) {
  314. $n = mt_rand ( 1, 100 );
  315. if (in_array ( $tel, $this->heimingdan ['tel'] ) && L_ZY > 0) {
  316. $this->tel_zy=true;
  317. if ($n > L_ZY) {
  318. 1을 반환합니다.
  319. }
  320. }else{
  321. //号码检测
  322. if (!self::check_tel($tel)) {
  323. return 1;
  324. }
  325. }
  326. 0을 반환합니다.
  327. }
  328. /**
  329. * 총 상품 수
  330. * @param intval $uid
  331. * @param intval $start
  332. * @param intval $end
  333. * @param bool $bool true 획득한 상품 수 false 통계 없음
  334. * @return 번호
  335. */
  336. 비공개 함수 get_lottery($uid = 0, $start = 0, $end = 0, $bool = false) {
  337. $sql = " "에서 count(*) m을 선택합니다. DB::table ( $this->lottery_log );
  338. $sql .= " 여기서 1 ";
  339. if (intval ( $start ) > 0) {
  340. $sql .= " and addtime>='$start' ";
  341. }
  342. if (intval ( $end ) > 0) {
  343. $sql .= " and addtime<'$end' ";
  344. }
  345. if ($bool) {
  346. $sql .= " and lotteryid>0 ";
  347. }
  348. if (intval ( $uid ) > 0) {
  349. $sql .= " and uid='$uid' ";
  350. }
  351. return intval ( DB::result_first ( $sql ) );
  352. }
  353. /**
  354. * 총 상품 수
  355. * @param intval $uid
  356. * @param intval $start
  357. * @param intval $end
  358. * @param intval $bool 상품 ID
  359. * @ 반품번호
  360. */
  361. 비공개 함수 get_lottery_id($uid = 0, $start = 0, $end = 0, $lotteryid = 0) {
  362. $ sql = "에서 count(*) m 선택 " . DB::table ( $this->lottery_log );
  363. $sql .= " 여기서 1 ";
  364. if (intval ( $start ) > 0) {
  365. $sql .= " and addtime>='$start' ";
  366. }
  367. if (intval ( $end ) > 0) {
  368. $sql .= " and addtime<'$end' ";
  369. }
  370. if ($lotteryid>=0) {
  371. $sql .= " and lotteryid='$lotteryid' ";
  372. }
  373. if (intval ( $uid ) > 0) {
  374. $sql .= " and uid='$uid' ";
  375. }
  376. return intval( DB::result_first ( $sql ) );
  377. }
  378. /**
  379. * 사용자 LIF 코인 받기
  380. * @param intval $uid
  381. * @return number
  382. */
  383. 공개 함수 get_user_lfb($uid) {
  384. $sql = "sz_common_member_count에서 extcredits2 선택 ";
  385. $sql .= " 여기서 1 ";
  386. $sql .= " 및 uid='$uid' ";
  387. return intval( DB::result_first ( $sql ) );
  388. }
  389. /**
  390. * 로그 기록 및 사용자 LIF 코인 업데이트
  391. * @param intval $uid
  392. * @param intval $r 반환 값
  393. * @param intval $logid
  394. * @param intval $lotteryid
  395. */
  396. 개인 기능 크레딧($uid, $result, $logid = 0, $lotteryid = 0,$hao=0) {
  397. $data = 정렬();
  398. if ($lotteryid > 0) {
  399. $data ['lotteryid'] = $lotteryid;
  400. $data ['승리'] = 1;
  401. }
  402. $data ['결과'] = $결과;
  403. $data ['hao'] = $hao;
  404. $data ['HTTP_REFERER'] = $_SERVER['HTTP_REFERER'];
  405. DB::Update ( $this->lottery_log, $data, " logid='$logid' " );
  406. if (L_LFB > 0) {
  407. $sql = 'UPDATE sz_common_member_count SET extcredits2=extcredits2-' . L_LFB . ' 어디에서 uid=' . $uid;
  408. DB::query( $sql );
  409. $this->credit_log ( $uid, 'reduce', L_LFB, 1, '积分清零活动' );
  410. }
  411. }
  412. /**
  413. *휴대폰번호 확인
  414. */
  415. 비공개 함수 check_tel($tel){
  416. $다른_network=table_sub::get_ Different_network();
  417. if (!preg_match("/$다른_network/",$tel)) {
  418. false를 반환합니다.
  419. }
  420. true를 반환합니다.
  421. }
  422. /**
  423. * 저장 프로시저 링크
  424. */
  425. 비공개 $StoreProcs;
  426. /**
  427. * Rafflecoin 로그 저장 프로시저
  428. * @param intval $uid
  429. * @param string $op 추가로 소비 감소
  430. * @param intval $creditvalue Rafflecoin
  431. * @param intval $credittype 1Raffles 코인2Raffles 포인트
  432. * @param string $oreason 설명
  433. */
  434. 비공개 함수 Credit_log($uid, $op, $creditvalue, $credittype, $oreason) {
  435. if (! $this->StoreProcs) {
  436. $this->StoreProcs = 새 StoreProcs();
  437. }
  438. //调用存储过程
  439. $this->StoreProcs->query ( "call app_credit_log($uid,'$op','$credittype',1,$creditvalue,'$ 이유')" );
  440. }
  441. }
复代码

三,调用:

  1. $dzp=new lib_dzp_lottery();
  2. $u=array('uid'=>$_G ['uid'],'tel'=>$_G ['tel'],'ip'=> $_G ['clientip']) ;
  3. $dzp->load_setting();
  4. $dzp->show($dzp->check($u));
  5. ?>
复代码


원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿