热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信(weixin)大转盘抽奖页面、数据库以及抽奖算法(PHP源码)-PHP源码

目前最为流行的微信游戏了,就是抽奖活动,下面我看一站长整理了这款抽奖源码出来,下面我也转过来与各位朋友分享。
目前最为流行的微信游戏了,就是抽奖活动,下面我看一站长整理了这款抽奖源码出来,下面我也转过来与各位朋友分享。

在做微信的过程中用到了微信抽奖,看了其他的作者都只是吧微信抽奖的页面共享出来了。我现在把转盘抽奖程序和微信抽奖页面都共享出来,有需要的自己把两者组合一下即可。

微信(weixin)大转盘抽奖

部份源码:配置文件

代码如下
return array (
'DB_TYPE' => 'mysql',
'DB_HOST' => '127.0.0.1',
'DB_NAME' => 'ites',
'DB_USER' => 'root',
'DB_PWD' => '111111',
'DB_PORT' => 3306,
'DB_PREFIX' => 'it_',
'APP_DEBUG' => 1,
'SHOW_ERROR_MSG' => 1,
'SHOW_PAGE_TRACE' => 1,
'DATA_CACHE_TYPE' => 'Redis',
'REDIS_HOST' => '127.0.0.1',
'REDIS_PORT' => 6379,
'DATA_CACHE_TIME' => 3600,
'URL_CASE_INSENSITIVE' => true,
'TMPL_STRIP_SPACE' => false,
'URL_HTML_SUFFIX' => '',
'SITE_NAME' => '11111',
'SITE_URL' => 'http://www.111cn.net/',
'WECHAT_TOKEN' => '你的',
'WECHAT_APPID' => '你的',
'WECHAT_APPSECRET' => '你的',
'DATA_AUTH_KEY' => 'abcdddd',
);
?>

commond.php文件

代码如下

function isMobile($mobile) {
return preg_match("/^(?:13d|14d|15d|18[0123456789])-?d{5}(d{3}|*{3})$/", $mobile);
}

function isEmail($email) {
return strlen($email) > 6 && preg_match("/^[w-.]+@[w-.]+(.w+)+$/", $email);
}

/**
* 发送HTTP请求方法,目前只支持CURL发送请求
* @param string $url 请求URL
* @param array $params 请求参数
* @param string $method 请求方法GET/POST
* @return array $data 响应数据
*/
function http($url, $params, $method = 'GET', $header = array(), $multi = false){
$opts = array(
CURLOPT_TIMEOUT => 30,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSL_VERIFYHOST => false,
CURLOPT_HTTPHEADER => $header
);

/* 根据请求类型设置特定参数 */
switch(strtoupper($method)){
case 'GET':
$opts[CURLOPT_URL] = $url . '?' . http_build_query($params);
break;
case 'POST':
//判断是否传输文件
//$params = $multi ? $params : http_build_query($params);
$opts[CURLOPT_URL] = $url;
$opts[CURLOPT_POST] = 1;
$opts[CURLOPT_POSTFIELDS] = $params;
break;
default:
throw new Exception('不支持的请求方式!');
}

/* 初始化并执行curl请求 */
$ch = curl_init();
curl_setopt_array($ch, $opts);
$data = curl_exec($ch);
$error = curl_error($ch);
curl_close($ch);
if($error) throw new Exception('请求发生错误:' . $error);
return $data;
}

/**
* 不转义中文字符和/的 json 编码方法
* @param array $arr 待编码数组
* @return string
*/
function jsencode($arr) {
$str = str_replace ( "\/", "/", json_encode ( $arr ) );
$search = "#\u([0-9a-f]+)#ie";

if (strpos ( strtoupper(PHP_OS), 'WIN' ) === false) {
$replace = "iconv('UCS-2BE', 'UTF-8', pack('H4', '\1'))";//LINUX
} else {
$replace = "iconv('UCS-2', 'UTF-8', pack('H4', '\1'))";//WINDOWS
}

return preg_replace ( $search, $replace, $str );
}

// 数据保存到文件
function data2file($filename, $arr=''){
if(is_array($arr)){
$con = var_export($arr,true);
$con = "";
} else{
$con = $arr;
$con = "";
}
write_file($filename, $con);
}

/**
* 系统加密方法
* @param string $data 要加密的字符串
* @param string $key 加密密钥
* @param int $expire 过期时间 单位 秒
* @return string
* @author winky
*/
function encrypt($data, $key = '', $expire = 0) {
$key = md5(empty($key) ? C('DATA_AUTH_KEY') : $key);
$data = base64_encode($data);
$x = 0;
$len = strlen($data);
$l = strlen($key);
$char = '';

for ($i = 0; $i <$len; $i++) {
if ($x == $l) $x = 0;
$char .= substr($key, $x, 1);
$x++;
}

$str = sprintf('%010d', $expire ? $expire + time():0);

for ($i = 0; $i <$len; $i++) {
$str .= chr(ord(substr($data, $i, 1)) + (ord(substr($char, $i, 1)))%256);
}
return str_replace(array('+','/','='),array('-','_',''),base64_encode($str));
}

/**
* 系统解密方法
* @param string $data 要解密的字符串 (必须是encrypt方法加密的字符串)
* @param string $key 加密密钥
* @return string
* @author winky
*/
function decrypt($data, $key = ''){
$key = md5(empty($key) ? C('DATA_AUTH_KEY') : $key);
$data = str_replace(array('-','_'),array('+','/'),$data);
$mod4 = strlen($data) % 4;
if ($mod4) {
$data .= substr('====', $mod4);
}
$data = base64_decode($data);
$expire = substr($data,0,10);
$data = substr($data,10);

if($expire > 0 && $expire return '';
}
$x = 0;
$len = strlen($data);
$l = strlen($key);
$char = $str = '';

for ($i = 0; $i <$len; $i++) {
if ($x == $l) $x = 0;
$char .= substr($key, $x, 1);
$x++;
}

for ($i = 0; $i <$len; $i++) {
if (ord(substr($data, $i, 1)) $str .= chr((ord(substr($data, $i, 1)) + 256) - ord(substr($char, $i, 1)));
}else{
$str .= chr(ord(substr($data, $i, 1)) - ord(substr($char, $i, 1)));
}
}
return base64_decode($str);
}

function getTaskStatusStr($status = 0,$type = 'apply' , $company = ''){
if ($type == 'comment') return '尚未作出评价';
switch ($status) {
case 0:
return $type == 'apply' ? '已发出任务申请' : $company.'对你发出了任务邀请';
break;
case 1:
return $type == 'apply' ? '企业已通过申请' : '已同意企业的邀请';
break;
case 2:
return $type == 'apply' ? '企业已忽略你的申请' : '你已经忽略企业的邀请';
break;
case 3:
return $type == 'apply' ? '你已完成该任务' : '该任务已经完成';
break;
default:
return '未知的状态';
break;
}
}


function getArea($cache = true){
$area = S ( 'S_Area' );
if (empty ( $area ) || ! $cache) {
// 缓存不存在,或者参数读取缓存。
$areaModel = D('Area');
$area = $areaModel -> where ('status = 3')->order ( 'sort,itemid' )->getField('itemid,title,pid,arrparentid,child');
//把市的省拚出来
foreach ($area as $k=>$v){
//如果是顶级
if ($v['pid']==0){
$areaArr[$v['itemid']]['itemid'] = $v['itemid'];
$areaArr[$v['itemid']]['title'] = $v['title'];
$areaArr[$v['itemid']]['pid'] = $v['pid'];
$areaArr[$v['itemid']]['arrparentid'] = $v['arrparentid'];
$areaArr[$v['itemid']]['child'] = $v['child'];
//上级
$areaArr[$v['itemid']]['upitemid'] = $v['itemid'];
$areaArr[$v['itemid']]['uptitle'] = $v['title'];
}
//查出上级的名称和ID
else {
$areaArr[$v['itemid']]['itemid'] = $v['itemid'];
$areaArr[$v['itemid']]['title'] = $v['title'];
$areaArr[$v['itemid']]['pid'] = $v['pid'];
$areaArr[$v['itemid']]['arrparentid'] = $v['arrparentid'];
$areaArr[$v['itemid']]['child'] = $v['child'];
//上级
$areaArr[$v['itemid']]['upitemid'] = $area[$v['pid']]['itemid'];
$areaArr[$v['itemid']]['uptitle'] = $area[$v['pid']]['title'];
}
}
$area = $areaArr;
S ( 'S_Area' , $area );
}
return $area;
}

?>

源码下载地址

http://file.111cn.net/upload/2014/3/wx.rar

推荐阅读
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • Redis底层数据结构之压缩列表的介绍及实现原理
    本文介绍了Redis底层数据结构之压缩列表的概念、实现原理以及使用场景。压缩列表是Redis为了节约内存而开发的一种顺序数据结构,由特殊编码的连续内存块组成。文章详细解释了压缩列表的构成和各个属性的含义,以及如何通过指针来计算表尾节点的地址。压缩列表适用于列表键和哈希键中只包含少量小整数值和短字符串的情况。通过使用压缩列表,可以有效减少内存占用,提升Redis的性能。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 在Android中解析Gson解析json数据是很方便快捷的,可以直接将json数据解析成java对象或者集合。使用Gson解析json成对象时,默认将json里对应字段的值解析到java对象里对应字段的属性里面。然而,当我们自己定义的java对象里的属性名与json里的字段名不一样时,我们可以使用@SerializedName注解来将对象里的属性跟json里字段对应值匹配起来。本文介绍了使用@SerializedName注解解析json数据的方法,并给出了具体的使用示例。 ... [详细]
  • 分享css中提升优先级属性!important的用法总结
    web前端|css教程css!importantweb前端-css教程本文分享css中提升优先级属性!important的用法总结微信门店展示源码,vscode如何管理站点,ubu ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • 基于layUI的图片上传前预览功能的2种实现方式
    本文介绍了基于layUI的图片上传前预览功能的两种实现方式:一种是使用blob+FileReader,另一种是使用layUI自带的参数。通过选择文件后点击文件名,在页面中间弹窗内预览图片。其中,layUI自带的参数实现了图片预览功能。该功能依赖于layUI的上传模块,并使用了blob和FileReader来读取本地文件并获取图像的base64编码。点击文件名时会执行See()函数。摘要长度为169字。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
author-avatar
四-没-之-女
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有