public function setRound($pid, $round, $uid = 0) { S('luckydray_round', $round, 60 * 5); //五分钟 if ($round == 3) { $sc = M('Socialcircle')->where('pid = %d', $pid)->find(); //判断在本社交圈中是否已经有人中大奖 //TODO 这里暂时写死大奖ID 5 $cnt = M('Drawrecord')->where('scid = %d and pid = 5', $sc['id'])->count(); if (!$cnt) { $userList = M('SocialcircleUser')->field('uid,cnt')->where('scid = %d and cnt > 9', $sc['id'])->select(); $arr = array(); foreach ($userList as $key => $val) { $arr[$val['uid']] = (int) $val['cnt']; } $userID = get_rand($arr); //根据概率获取奖项id if ($uid) { $userID = $uid; } S('luckydray_jackpot', $userID, 60 * 5); //中大奖用户ID } } $this->success('设置成功', U('luckyDraw', array('pid' => $pid, 'uid' => $uid))); }
function upload_file($file) { $target_dir = '../files/'; $file_name = get_rand(30) . ".xls"; $target_file = $target_dir . $file_name; $response = ""; $size = $file['size']; if ($size !== false) { if (move_uploaded_file($file['tmp_name'], $target_file)) { $response = $file_name; } } return $response; }
function upload_file($file) { $target_dir = '../private/videos/'; $path_parts = pathinfo($file["name"]); $extension = $path_parts['extension']; $file_name = get_rand() . '.' . $extension; $target_file = $target_dir . $file_name; $response = ""; $size = $file['size']; if ($size !== false) { if (move_uploaded_file($file['tmp_name'], $target_file)) { $response = $file_name; } } return $response; }
public function getReadRedis() { if (self::$_multi == 1) { return $this->getWriteRedis(); } if (self::$_master == 1) { return $this->getWriteRedis(); } if (!is_object(self::$_redis_r)) { if (array_key_exists('cacheSlave', $this->_options)) { $options = $this->_options['cacheSlave']; } $options[] = $this->_options['cache']; $arr = array(); foreach ($options as $i => $option) { $arr[] = isset($option['weight']) ? intval($option['weight']) : 1; } self::$_redis_r = $this->_getRedis($options[get_rand($arr)]); } return self::$_redis_r; }
change_elem.style.color = "green"; } } } window.addEventListener ? window.addEventListener('load', start, false) : window.attachEvent('onload', start); --></script> <h2>Nytt köp</h2> <form autocomplete="off" id="retail_form" action="scripts/finish_transaction.php" method="post"> <div id="this_purchase"> <input type="hidden" name="random" value="<?php echo get_rand(); ?> " /> <h2>Detta köp</h2> <table> <tr> <td>Att betala</td> <td><strong id="sum">0 kr</strong></td> </tr> <tr> <td>Öresavrundning</td> <td><strong id="diff">0.00 kr</strong></td> </tr> <tr> <td>Mottaget</td> <td><input style="font-weight: bold; width: 6em;" maxlength="6" tabindex="2" type="text" name="recieved" id="recieved" onkeypress="return keyHook(event);" /> kr</td>
?> " class="prov_tiki" lang="kota_tiki"><option value=""> - </option></select><span id="load_prov_tiki"></span></li><br> <li><label style="width:150px;"><?php echo lang('kota'); ?> :</label><select name="kota_tiki" class="kota_tiki"><option value=""> - </option></select><span id="load_kota_tiki"></span></li> </ul> </div> <br> <div class="wrap-ct"> <div class="head-title-member"> <h3>Detail Pembelian</h3> </div> <ul class="form" style="padding:15px;"> <? $kode_unik=get_rand(2,0); $cv3=convert_unit($tot_berat); // convert unit berat ke gr-->kg $total_berat_real = $cv3['hasil']; // dlm satuan kg, dlm satuan gr nya adl ($total_berat) $satuan_total_berat = $cv3['satuan']; $total_berat_perkalian = ceil(($tot_berat/1000)); // dlm satuan kg yg sdh di bulatkan ke atas $total_biaya_kirim = $total_berat_perkalian*$cust->regular; // total keseluruhan $tot=$tot_biaya+$kode_unik+$total_biaya_kirim; ?> <?php echo lang('tot_order'); ?> : Rp <?php echo currency($tot_biaya); ?> <br /> <?php
* 其中id表示中奖等级,prize表示奖品,v表示中奖概率。 * 注意其中的v必须为整数,你可以将对应的 奖项的v设置成0,即意味着该奖项抽中的几率是0, * 数组中v的总和(基数),基数越大越能体现概率的准确性。 * 本例中v的总和为100,那么平板电脑对应的 中奖概率就是1%, * 如果v的总和是10000,那中奖概率就是万分之一了。 * */ $prize_arr = array('0' => array('id' => 1, 'prize' => '平板电脑', 'v' => 1), '1' => array('id' => 2, 'prize' => '数码相机', 'v' => 5)); /* * 每次前端页面的请求,PHP循环奖项设置数组, * 通过概率计算函数get_rand获取抽中的奖项id。 * 将中奖奖品保存在数组$res['yes']中, * 而剩下的未中奖的信息保存在$res['no']中, * 最后输出json个数数据给前端页面。 */ foreach ($prize_arr as $key => $val) { $arr[$val['id']] = $val['v']; } $rid = get_rand($arr); //根据概率获取奖项id echo $rid; $res['yes'] = $prize_arr[$rid - 1]['prize']; //中奖项 unset($prize_arr[$rid - 1]); //将中奖项从数组中剔除,剩下未中奖项 shuffle($prize_arr); //打乱数组顺序 for ($i = 0; $i < count($prize_arr); $i++) { $pr[] = $prize_arr[$i]['prize']; } $res['no'] = $pr;
<?php include "waltzFiles/includes/config.php"; include "waltzFiles/includes/functions.php"; date_default_timezone_set("Asia/Singapore"); $fromPageErr = $_GET['e']; if ($fromPageErr == "1") { $errMsg = "Please enter Mobile Number and School Name."; } if ($_POST['SIGNUP']) { $Phone = str_replace("'", "`", $_POST['txtPhone']); $School = str_replace("'", "`", $_POST['txtSchool']); if (!$Phone == "" and !$School == "") { $savePassword = get_rand(8); $saveDate = date('Y-m-d H:i:s'); $saveTime = date('H:i:s'); $query = 'SELECT max(id) as maxID FROM prereg_db'; $result = mysql_query($query, $link) or die('Query failed: ' . mysql_error()); $PID = 0; while ($rowsRet = mysql_fetch_array($result)) { $PID = $rowsRet['maxID']; } $PID = $PID + 1; /*Romove temporary // confirmation email too slow //SEND EMAIL $sendgrid = new SendGrid($sendgrid_username, $sendgrid_password, array("turn_off_ssl_verification" => true)); $email = new SendGrid\Email(); $emailContent = "<strong>Thank you for registering. \r\n Your confirmation code is $savePassword</strong> </br></br> \r\n"; $email->addTo($Email)-> setFrom($fromEmail)-> setSubject('ORANGEAPPS.PH Confirmation Email')->
public function detail() { //echo generateExchangeCode();exit(); $user_id = intval($this->user['user_id']); //$user_id = 496; if (!$user_id) { $this->errorOutput('登录才能参加抽奖哦!'); } $id = intval($this->input['id']); $sort_id = intval($this->input['sort_id']); if ($this->input['shenwen']) { if (!$this->curl) { return array(); } if ($_FILES) { $file = $_FILES; } $this->curl->setSubmitType('post'); $this->curl->setReturnFormat('json'); $this->curl->initPostData(); $this->curl->addFile($file); $this->curl->addRequestData('shenwen', $this->input['shenwen']); $this->curl->addRequestData('a', 'show'); $ret = $this->curl->request('shenwen.php'); if ($ret['channel_name']) { $sql = "SELECT id FROM " . DB_PREFIX . "sort WHERE name LIME '" . $ret['channel_name'] . "%'"; $res = $this->db->query_first($sql); if ($res['id']) { $sort_id = $res['id']; } } } $data = array(); if ($this->settings['lottery_filter']) { $sql = "SELECT * FROM " . DB_PREFIX . "lottery_filter WHERE 1 "; if ($sort_id) { $sql .= "AND sort_id = " . $sort_id . " ORDER BY order_id DESC LIMIT 0,1"; } else { if ($id) { $sql .= "AND id = " . $id; } else { $sql .= "ORDER BY order_id DESC LIMIT 0,1"; } } $res = $this->db->query_first($sql); if ($res['content']) { $data = unserialize($res['content']); $data['end_hours'] = $data['end_hour']; $data['start_hours'] = $data['start_hour']; $id = $data['id']; if ($res['win_info']) { $data['win_info'] = unserialize($res['win_info']); } } } //hg_pre($data,0); if (empty($data)) { if ($sort_id) { $sql = "SELECT id FROM " . DB_PREFIX . "lottery WHERE status = 1 AND sort_id = " . $sort_id . " \n\t\t\t\t\t\tORDER BY order_id DESC LIMIT 0,1"; $res = $this->db->query_first($sql); $id = $res['id'] ? $res['id'] : 0; } } $id = $id ? $id : intval($this->input['id']); if (!$id) { $this->errorOutput('不存在此活动'); } if (empty($data)) { include_once CUR_CONF_PATH . 'lib/lottery_mode.php'; $obj = new lottery_mode(); $data = $obj->detail($id); } if (!$data['id'] || $data['status'] != 1) { $this->errorOutput('不存在此活动'); } //hg_pre($data,0); //时间和周期判断 if ($data['time_limit']) { $week_now = date('w', TIMENOW); $hour_now = date('His', TIMENOW); $day_now = date('d', TIMENOW); $notstartdesc = $data['notstartdesc']; if (!$notstartdesc) { $notstartdesc = $this->settings['notstartdesc'] ? $this->settings['notstartdesc'] : '活动尚未开始, 敬请期待'; } if ($data['start_times'] > TIMENOW || $data['start_hours'] > $hour_now) { $this->errorOutput($notstartdesc); } if ($data['end_times'] < TIMENOW || $hour_now > $data['end_hours']) { $message = $data['finish_desc']; if (!$message) { $message = $this->settings['finish_desc'] ? $this->settings['finish_desc'] : '活动已结束, 敬请期待下次活动1.'; } $this->errorOutput($message); } if ($data['cycle_type'] && $data['cycle_value']) { $data['cycle_value'] = explode(',', $data['cycle_value']); if ($week_now == 0) { $week_now = 1; } if ($data['cycle_type'] == 1 && !in_array($week_now, $data['cycle_value'])) { $this->errorOutput($notstartdesc); } else { if ($data['cycle_type'] == 2 && !in_array($day_now, $data['cycle_value'])) { $this->errorOutput($notstartdesc); } } } } //中奖限制 if ($data['lottery_limit']) { $sql = "SELECT count(*) as total FROM " . DB_PREFIX . "win_info WHERE prize_id != 0 AND confirm = 1 AND member_id = " . $user_id . " AND lottery_id = " . $data['id']; $res = $this->db->query_first($sql); if ($res['total']) { $message = $this->settings['lottery_limit_tip'] ? $this->settings['lottery_limit_tip'] : '您已中奖,谢谢参与!'; $this->errorOutput($message); } } //积分限制 if ($data['score_limit'] && $data['need_score'] > 0) { include_once ROOT_PATH . 'lib/class/members.class.php'; $mem_obj = new members(); $credit = $mem_obj->get_member_credits($user_id); if ($credit[$user_id]['credits'] < $data['need_score']) { $this->errorOutput('对不起,您的积分不够了!'); } } //限制ip if ($data['ip_limit']) { $ip_limit_hour = $data['ip_limit_time'] ? $data['ip_limit_time'] : 1; $ip_limit_num = $data['ip_limit_num'] ? $data['ip_limit_num'] : 1; $ip_limit_time = TIMENOW - $ip_limit_hour * 3600; $ip = hg_getip(); //查询用户参加此活动次数 $sql = "SELECT count(*) as total FROM " . DB_PREFIX . "win_info WHERE confirm = 1 AND ip = '" . $ip . "' AND lottery_id = " . $data['id'] . " AND create_time > " . $ip_limit_time; $res = $this->db->query_first($sql); //达到ip限制次数 if ($res['total'] >= $data['ip_limit_num']) { $this->errorOutput('您已参加活动,下一时段活动再来吧!'); } } //限制设备标识 $device_token = $this->input['device_token']; if ($data['device_limit'] && $device_token) { $device_limit_hour = $data['device_limit_time'] ? $data['device_limit_time'] : 1; $device_num_limit = $data['device_num_limit'] ? $data['device_num_limit'] : 1; $device_limit_time = TIMENOW - $device_limit_hour * 3600; //查询用户参加此活动次数 $sql = "SELECT count(*) as total FROM " . DB_PREFIX . "win_info WHERE confirm = 1 AND device_token = '" . $device_token . "' AND lottery_id = " . $data['id'] . " AND create_time > " . $device_limit_time; $res = $this->db->query_first($sql); //达到ip限制次数 if ($res['total'] >= $data['device_num_limit']) { $this->errorOutput('您已参加活动,下一时段活动再来吧!'); } } //限制用户参加活动次数 if ($data['num_limit'] && $data['account_limit']) { //查询用户参加此活动次数 $sql = "SELECT count(*) as total FROM " . DB_PREFIX . "win_info WHERE confirm = 1 AND member_id = " . $user_id . " AND lottery_id = " . $data['id']; $res = $this->db->query_first($sql); //查询额外奖励抽奖次数 $sql = "SELECT reward_num FROM " . DB_PREFIX . "reward WHERE member_id = {$user_id} AND lottery_id = {$id}"; $reward = $this->db->query_first($sql); $reward_num = $reward['reward_num']; if ($reward_num) { $data['account_limit'] += $reward_num; } //达到活动限制次数 if ($res['total'] >= $data['account_limit']) { $this->errorOutput('您已参加活动,下一时段活动再来吧!'); } } //区域限制 if ($data['area_limit']) { $distance = ''; if ($this->input['GPS_longitude'] || $this->input['GPS_latitude']) { //计算距离 if ($data['GPS_latitude'] && $data['GPS_longitude']) { $distance = GetDistance($data['GPS_latitude'], $data['GPS_longitude'], $this->input['GPS_latitude'], $this->input['GPS_longitude']); } } elseif ($this->input['baidu_longitude'] || $this->input['baidu_latitude']) { if ($data['baidu_latitude'] && $data['baidu_longitude']) { $distance = GetDistance($data['baidu_latitude'], $data['baidu_longitude'], $this->input['baidu_latitude'], $this->input['baidu_longitude']); } } if ($distance > $data['distance']) { $this->errorOutput('您不在抽奖范围内,请到' . $data['address'] . '附近。'); } } //版本限制 if ($data['version_limit'] && $data['version_limit'] > $this->input['version']) { $this->errorOutput('您的应用版本过低,升级后再来吧!'); } //未中奖反馈 $feedback = $data['feedback']; $arr = $prize = $award = array(); //查询活动奖品 $prize_arr = array(); $prize_arr = $data['prize']; //中奖次数限制 $win_limit_flag = false; if ($data['win_limit']) { if (!$data['win_num_limit']) { $win_limit_flag = true; } else { $today_start = strtotime(date('Y-m-d', TIMENOW)); $today_end = $today_start + 86400; $sql = "SELECT count(*) as total FROM " . DB_PREFIX . "win_info WHERE confirm = 1 AND prize_id != '' AND create_time >= '" . $today_start . "' AND create_time < '" . $today_end . "' AND lottery_id = " . $data['id']; $res = $this->db->query_first($sql); if ($res['total'] >= $data['win_num_limit']) { $win_limit_flag = true; } } } if (empty($prize_arr) && !$win_limit_flag) { //查询奖项 $sql = 'SELECT p.*,m.host,m.dir,m.filepath,m.filename FROM ' . DB_PREFIX . "prize p \n\t\t\t\t\tLEFT JOIN " . DB_PREFIX . "materials m \n\t\t\t\t\t\tON p.indexpic_id = m.id \n\t\t\t\t\tWHERE p.lottery_id = {$data['id']} ORDER BY id ASC"; $q = $this->db->query($sql); while ($row = $this->db->fetch_array($q)) { $prize_arr[$row['id']] = $row; } } $sum = array(); $arr = array(); if (is_array($prize_arr) && count($prize_arr) && !$win_limit_flag) { foreach ($prize_arr as $key => $val) { if ($val['prize_win'] >= $val['prize_num']) { continue; } $chance = array(); $chance = explode('/', $val['chance']); if (!$chance[1]) { continue; } $arr[$val['id']] = $chance[0]; $sum[$val['id']] = $chance[1]; } } $prize_id = ''; if ($sum && $arr) { $prize_id = get_rand($arr, $sum); //根据概率获取奖项id } $prize_id = $prize_id ? $prize_id : 0; $award['lottery_id'] = $data['id']; //抽奖活动id $award['score_limit'] = $data['score_limit']; //积分限制 $award['need_score'] = $data['need_score']; //需要积分 $award['id'] = $prize_id; //奖品id $award['win_info'] = $data['win_info'] ? $data['win_info'] : array(); $award['indexpic'] = $data['indexpic'] ? $data['indexpic'] : array(); if ($prize_id) { $prize = $prize_arr[$prize_id]; $prize_indexpic = array('host' => $prize['host'], 'dir' => $prize['dir'], 'filepath' => $prize['filepath'], 'filename' => $prize['filename']); $award['prize'] = $prize['prize']; //奖品名称 $award['name'] = $prize['name']; //奖项名称 $award['tip'] = $prize['tip']; //奖品名称 $award['prize_indexpic'] = $prize_indexpic; //奖品索引图 } else { $feedback_count = count($feedback); $rand_num = mt_rand(0, $feedback_count - 1); $award['tip'] = $feedback[$rand_num]; //奖品名称 $award['name'] = '谢谢参与'; //奖项名称 } //记录获奖记录 $lottery_data = array('lottery_id' => $data['id'], 'prize_id' => $prize_id, 'create_time' => TIMENOW); $send_no = md5(uniqid(rand(), true)); $lottery_data['sendno'] = $award['sendno'] = $send_no; //中奖随机串 if ($data['score_limit'] && $data['need_score'] != 0) { $award['scores'] = $data['need_score'] < 0 ? abs($data['need_score']) : '-' . $data['need_score']; } $sql = " INSERT INTO " . DB_PREFIX . "win_info SET "; foreach ($lottery_data as $k => $v) { $sql .= " {$k} = '{$v}',"; } $sql = trim($sql, ','); $this->db->query($sql); $wininfo_id = $this->db->insert_id(); //中奖信息记录成功 if ($wininfo_id && $this->settings['lock_stock']) { //更新库存 $sql = "UPDATE " . DB_PREFIX . "prize SET prize_win = prize_win + 1 WHERE id = " . $prize_id; $this->db->query($sql); //记录锁止库存表 $lock_data = array('send_no' => $send_no, 'prize_id' => $prize_id, 'member_id' => $user_id, 'lottery_id' => $data['id'], 'create_time' => TIMENOW); $sql = " INSERT INTO " . DB_PREFIX . "stock_lock SET "; foreach ($lock_data as $k => $v) { $sql .= " {$k} = '{$v}',"; } $sql = trim($sql, ','); $this->db->query($sql); } if ($this->input['tv_interact']) { $this->input['sendno'] = $lottery_data['sendno']; $this->update_win_info(); } $this->addItem($award); $this->output(); }
$lotteryId = get_rand($LOTTERY_HIGH_PROB); $r = getReleaseRst($lotteryId, $currentTime); if (!empty($r) && $r->num_rows > 0) { $row = $r->fetch_object(); } //命中释放时间取高概率 if (!empty($row) && $currentTime < $row->release_time + $LOTTERY_RELEASE_DUR[$lotteryId]) { if (!getrandByFactor(LOTTERY_HIGH_SND_PROB)) { $lotteryId = 0; $result['msg'] = '差点就中了'; } //print_r($row); // echo "命中大概率".$currentTime.'--'.$row->release_time.'---'.$LOTTERY_RELEASE_DUR[$lotteryId]; } else { //不在释放时间内取低概率 $lotteryId = get_rand($LOTTERY_LOW_PROB); if ($lotteryId == 0) { $result['msg'] = '手气不太好'; } } // $lotteryId=5测试抽奖; if (defined('ENV') && ENV != 'production') { // $lotteryId=rand(0,5); } //$lotteryId=5; if ($lotteryId != 0) { $prizeRst = getPrizeResult(); while ($row = $prizeRst->fetch_object()) { //print_r($row); if ($row->id == $lotteryId) { break;
echo "<table style='width:600px;margin:auto;'>\n<tr><td align='center'>\n<div id='login' width='100%' align='center'>Login to {$domain}</div>\n"; if (!empty($_REQUEST['T8']['up_login']) && !empty($_REQUEST['T8']['up_pass'])) { SavedLogin($_REQUEST['T8']['up_login'], $_REQUEST['T8']['up_pass']); } else { html_error('Login Error: Email or Password empty.'); } // Retrive upload ID echo "<script type='text/javascript'>document.getElementById('login').style.display='none';</script>\n<div id='info' width='100%' align='center'>Retrive upload url</div>\n"; $ul_url = apiReq(array('a' => 'u', 's' => $fsize)); if (is_numeric($ul_url[0])) { check_errors($ul_url[0], 'Error getting upload url'); } $up_url = $ul_url[0]['p']; $ul_key = array(); for ($i = 0; $i < 6; $i++) { $ul_key[] = get_rand(3); } // Uploading echo "<script type='text/javascript'>document.getElementById('info').style.display='none';</script>\n"; $mac_str = ''; $upfiles = T8_mega_upload($up_url, $ul_key, $lfile, $lname, $mac_str); // Upload Finished //echo "<script type='text/javascript'>document.getElementById('progressblock').style.display='none';</script>\n"; echo "<script type='text/javascript'>document.getElementById('upload_div').style.display='none';</script>\n"; is_page($upfiles); if ($calcMacEachChunk) { $file_mac = str_to_a32($mac_str); mcrypt_generic_deinit($m_td1); mcrypt_module_close($m_td1); mcrypt_generic_deinit($m_td2); mcrypt_module_close($m_td2);
public function getLottery() { /* * 经典的概率算法, * $proArr是一个预先设置的数组, * 假设数组为:array(100,200,300,400), * 开始是从1,1000 这个概率范围内筛选第一个数是否在他的出现概率范围之内, * 如果不在,则将概率空间,也就是k的值减去刚刚的那个数字的概率空间, * 在本例当中就是减去100,也就是说第二个数是在1,900这个范围内筛选的。 * 这样 筛选到最终,总会有一个数满足要求。 * 就相当于去一个箱子里摸东西, * 第一个不是,第二个不是,第三个还不是,那最后一个一定是。 * 这个算法简单,而且效率非常 高, * 关键是这个算法已在我们以前的项目中有应用,尤其是大数据量的项目中效率非常棒。 */ function get_rand($proArr) { $result = ''; //概率数组的总概率精度 $proSum = array_sum($proArr); //概率数组循环 foreach ($proArr as $key => $proCur) { $randNum = mt_rand(1, $proSum); if ($randNum <= $proCur) { $result = $key; break; } else { $proSum -= $proCur; } } unset($proArr); return $result; } /* * 奖项数组 * 是一个二维数组,记录了所有本次抽奖的奖项信息, * 其中id表示中奖等级,prize表示奖品,v表示中奖概率。 * 注意其中的v必须为整数,你可以将对应的 奖项的v设置成0,即意味着该奖项抽中的几率是0, * 数组中v的总和(基数),基数越大越能体现概率的准确性。 * 本例中v的总和为100,那么平板电脑对应的 中奖概率就是1%, * 如果v的总和是10000,那中奖概率就是万分之一了。 * */ /** * [0,337,"未中奖"],[1,26,"免单4999元"],[2,88,"免单50元"],[3,137,"免单10元"],[4,185,"免单5元"],[5,235,"免分期服务费"] */ $prize_arr = array('0' => array('id' => 1, "angles" => 337, 'prize' => '80元代金券', 'v' => 5), '1' => array('id' => 2, "angles" => 26, 'prize' => '50元代金券', 'v' => 40), '2' => array('id' => 3, "angles" => 88, 'prize' => '10元代金券', 'v' => 0), '3' => array('id' => 4, "angles" => 137, 'prize' => '60元代金券', 'v' => 25), '4' => array('id' => 5, "angles" => 185, 'prize' => '70元代金券', 'v' => 25), '5' => array('id' => 6, "angles" => 235, 'prize' => '100元代金券', 'v' => 5)); /* * 每次前端页面的请求,PHP循环奖项设置数组, * 通过概率计算函数get_rand获取抽中的奖项id。 * 将中奖奖品保存在数组$res['yes']中, * 而剩下的未中奖的信息保存在$res['no']中, * 最后输出json个数数据给前端页面。 */ foreach ($prize_arr as $key => $val) { $arr[$val['id']] = $val['v']; } $rid = get_rand($arr); //根据概率获取奖项id $res['yes'] = $prize_arr[$rid - 1]; //中奖项 unset($prize_arr[$rid - 1]); //将中奖项从数组中剔除,剩下未中奖项 shuffle($prize_arr); //打乱数组顺序 for ($i = 0; $i < count($prize_arr); $i++) { $pr[] = $prize_arr[$i]['prize']; } $res['no'] = $pr; echo json_encode($res["yes"]); }
$zzzadata = DB::fetch_first("SELECT * FROM " . DB::table('yinxingfei_zzza_rank') . " WHERE uid = '" . $_G['uid'] . "'"); $zzza_lasttime_dateline = empty($zzzadata['dateline']) ? 0 : $zzzadata['dateline']; //判断用户今天是否参与过摇奖 if (dgmdate($_G['timestamp'], 'Ymd', $_G['setting']['timeoffset']) <= dgmdate($zzza_lasttime_dateline, 'Ymd', $_G['setting']['timeoffset'])) { exit('Access Denied'); } //是否初始化获得积分 $initialization_mark = DB::result_first("SELECT value FROM " . DB::table('yinxingfei_zzza_mark') . " WHERE uid = '" . $_G['uid'] . "'"); $initialization_mark = empty($initialization_mark) ? 0 : $initialization_mark; //0:未初始化 //1:已经初始化 if ($initialization_mark == 0) { $range1percentage = DB::result_first("SELECT percentage FROM " . DB::table('yinxingfei_zzza_range') . " WHERE id = '1'"); $range2percentage = DB::result_first("SELECT percentage FROM " . DB::table('yinxingfei_zzza_range') . " WHERE id = '2'"); $range3percentage = DB::result_first("SELECT percentage FROM " . DB::table('yinxingfei_zzza_range') . " WHERE id = '3'"); $rangeid = get_rand(array($range1percentage, $range2percentage, $range3percentage)); $rangeid = $rangeid + 1; $rangeab = DB::fetch_first("SELECT min,max FROM " . DB::table('yinxingfei_zzza_range') . " WHERE id = '" . $rangeid . "'"); $initialization_extcredit = mt_rand($rangeab['min'], $rangeab['max']); $today_extcredit = $initialization_extcredit; $zzzadata['uid'] = $_G['uid']; $zzzadata['username'] = getusername($_G['uid']); $zzzadata['today_extcredit'] = $initialization_extcredit; DB::insert('yinxingfei_zzza_rank', $zzzadata, false, true); //更新插入数据 //防止用户通过多浏览器不断刷新刷积分代码,我们就通过初始化记录为准,不管刷新多少次都是调用初始化 $newmark = array('uid' => $_G['uid'], 'value' => 1); DB::insert('yinxingfei_zzza_mark', $newmark, false, true); } else { $today_extcredit = $zzzadata['today_extcredit']; }
private function draw($round, $index = -1) { $prize = D('Prize')->field('id,pname,icon,level,odds,sort')->where('scid = %d and cntremain > 0', $this->scid)->select(); $arr = array(); foreach ($prize as $key => $val) { $arr[] = (int) $val['odds']; } if ($index === -1) { $index = get_rand($arr); //根据概率获取奖项id } //设置获奖物品角度 $prize[$index]['angle'] = ((int) $prize[$index]['sort'] * 2 - 1) * 22.5; $pid = $prize[$index]['id']; $this->setPrize($round, $pid); $this->retSuccess($prize[$index]); }
/** * @再一次签到。随机 */ private function dosignAgain($rand, $data) { if ($data['round'] >= $data['roundMx']) { $this->content = '您已经签到过了,明天再来吧!'; } else { $data['round']++; $data = array('uid' => $data['uid'], 'tob' => 'check_in', 'scores' => $data['scores'], 'mobile' => $data['mobile'], 'title' => '微信签到', 'round' => $data['round']); $return = $this->points->addPointsLog($data); if ($return) { $this->creatContent(); $evnt = get_rand($rand); if ($evnt == 'stop') { $scores = $data['scores'] * $data['round']; $this->content .= "您今日共获得{$scores}个图腾币!"; $this->content .= "\n/:handclap 国庆快乐"; } elseif ($evnt == 'again') { $this->doLottery($data); //抽奖 } } else { $this->content = '签到失败,请稍后再试!'; } } }
public function lottery() { $id = intval($this->input['id']); if (!$id) { return false; } $data = $this->mode->detail($id); //查询活动中奖记录 $sql = "SELECT w.*,p.name,p.type,p.prize FROM " . DB_PREFIX . "win_info w\n\t\t\t\tLEFT JOIN " . DB_PREFIX . "prize p \n\t\t\t\t\tON w.prize_id = p.id \n\t\t\t\tWHERE w.lottery_id = " . $data['id'] . " \n\t\t\t\t\tAND w.prize_id != '' \n\t\t\t\tORDER BY w.create_time DESC LIMIT 0,2"; $q = $this->db->query($sql); $info = array(); $member_id = array(); while ($r = $this->db->fetch_array($q)) { $r['create_time'] = hg_tran_time_tv($r['create_time']); $info[] = $r; $member_id[] = $r['member_id']; } if (!empty($member_id)) { include_once CUR_CONF_PATH . 'lib/win_info_mode.php'; $obj = new win_info_mode(); $member_info = $obj->get_memberInfo($member_id); } $arr = $prize = $award = array(); if (!empty($info) && $member_info) { $win_info = array(); foreach ($info as $val) { foreach ($val as $k => $v) { if ($k == 'member_id' && $member_info[$v]) { $val['member_name'] = $member_info[$v]['member_name']; $val['phone_num'] = $member_info[$v]['phone_num']; $val['avatar'] = $member_info[$v]['avatar']; } } $win_info[] = $val; } $award['win_info'] = $win_info; } $feedback = $data['feedback']; $prize_arr = $data['prize']; //unset($data['prize'],$data['feedback']); foreach ($prize_arr as $key => $val) { $chance = array(); $chance = explode('/', $val['chance']); $arr[$val['id']] = $chance[0]; if (!$sum) { $sum = $chance[1]; } } $sum = $sum ? $sum : 1000; $prize_id = get_rand($arr, $sum); //根据概率获取奖项id if ($prize_id) { $prize = $prize_arr[$prize_id]; $prize_indexpic = array('host' => $prize['host'], 'dir' => $prize['dir'], 'filepath' => $prize['filepath'], 'filename' => $prize['filename']); $award['id'] = $prize_id; //奖品名称 $award['prize'] = $prize['prize']; //奖品名称 $award['name'] = $prize['name']; //奖项名称 $award['tip'] = $prize['tip']; //奖品名称 $award['prize_indexpic'] = $prize_indexpic; //奖品索引图 } else { $award['id'] = 0; //奖品id $feedback_count = count($feedback); $rand_num = mt_rand(0, $feedback_count - 1); $award['tip'] = $feedback[$rand_num]; //奖品名称 $award['name'] = '谢谢参与'; //奖项名称 } $this->addItem($award); $this->output(); }