许愿墙模块功能分析

一,热点技术

1,实现可拖放DOM技术移动许愿字条

可拖放DOM模式(Draggable DOM pattern)的宗旨在于允许浏览者自己定义页面中各元素的位置,并且,只需要用鼠标选中要移动的部分,把它拖到新的位置上,就可以定制页面。

DOM是Document Object Model文档对象模型的缩写,是一种与浏览器、平台、语言无关的接口,使用户可以访问页面其他的标准组件。DOM是以层次结构组织的节点或信息片段的集合。这个层次结构允许开发人员在树中导航寻找特定信息。分析该结构通常需要加载整个文档的构造层次结构,然后才能做任何工作。由于它基于信息层次,因此DOM被认为基于树或基于对象。

具体实现时以下时间会被触发:

(1)moveStart

(2)Move

(3)moveEnd

当按下鼠标左键,开始移动鼠标时,在被拖动的许愿条上就会触发moveStart事件。用户可以使用moveStart事件处理函数在拖动开始时允许javaScript代码。当moveStart事件被触发后,Move时间会一直触发,只要对象还在被拖动,就一直触发。当拖动停止时,则触发moveEnd事件。

echo输出许愿条样式布局,代码如下:

复制代码 代码如下:

echo "

爱墙编号:".$id."   ".$sendtime." ×

".$Picker."$content

".$author."

[祝福你] 福气:".$hits." QQ:图片

document.getElementById('txt_hyan').value = getVcode;

}else{

document.getElementById("messageImg").src="data:images/cuo.gif"; //验证码错误,输出显示错误图片

document.getElementById('checkcode').focus();

return false;

}

}

}

}

xmlhttp.send(null);

}

codeChk.php验证码检验页面

复制代码 代码如下:

session_start();

require 'secoder.class.php';  //先把类包含进来,实际路径根据实际情况进行修改。

$vcode = new YL_Security_Secoder();      //实例化一个对象

$code = $_GET['code'];

echo $vcode->check($code);  //check($code)函数返回的是true或者false,返回true时,codeChk.php页面输出的是1,否则没有输出

?>

secoder.class.php验证码类中的check($code)函数

复制代码 代码如下:

public static function check($code) {

isset($_SESSION) || session_start();

// 验证码不能为空

if(empty($code) || empty($_SESSION[self::$seKey])) {

return false;

}

// session 过期

if(time() - $_SESSION[self::$seKey]['time'] > self::$expire) {

unset($_SESSION[self::$seKey]);

return false;

}

if(strtoupper($code) == $_SESSION[self::$seKey]['code']) {  //不区分大小写比较

return true;

}

return false;

}

5,定义生成指定范围的许愿条随机算法

本模块需要生成一个指定范围的随机算法,用来显示许愿字条的显示位置,以使每次展示在读者眼前的都是不同的许愿字条。本模块主要应用rand()函数控制许愿墙纸的显示位置。

rand()函数用于产生一个随机整数

语法:rand(min,max)

参数:min,max可选,规定随机数产生的范围

如果没有提供可选参数 min 和 max,rand() 返回 0 到 RAND_MAX 之间的伪随机整数。在某些平台下(例如 Windows)RAND_MAX 只有 32768。如果需要的范围大于 32768,那么指定 min 和 max 参数就可以生成大于 RAND_MAX 的数了,或者考虑用 mt_rand() 来替代它。

mt_rand() 使用 Mersenne Twister 算法返回随机整数

语法:mt_rand(min,max)

如果没有提供可选参数 min 和 max,mt_rand() 返回 0 到 RAND_MAX 之间的伪随机数。很多老的libc的随机数发生器具有一些不确定和未知的特性而且很慢。php的rand()函数默认使用libc随机数发生器。mt_rand()函数是非正式用来替换它的。该函数用了Mersenne Twister中已知的特性作为随机数发生器,它可以产生随机数值的平均速度比libc提供的rand()快四倍。

随机显示许愿墙纸的关键代码如下:

$T=rand(320,520);

$L=rand(5,790);

$Z=$page_count;

$Z = $Z - 3;

echo "

爱墙编号:".$id."".$sendtime."×

".$Picker."$content

".$author."

[祝福你] 福气:".$hits." QQ:".$QQ."

";

6,解析IP获取用户所在城市

在PHP中,使用PHP预定义变量$_SERVER['REMOTE_ADDR']获取客户端的IP地址。然后将IP按照通用的算法将其解析成一个数字串(每个城市都有一个对应的数字串),通过这个数字串来确定查询用户所在的城市名称。

在数据库中,IP区域的存储时一个数字串,并非实际的IP地址,这时就需要对客户端或服务器端的IP转换成指定数字串的格式,从而进行地域信息的查询。

复制代码 代码如下:

$ip=getenv('REMOTE_ADDR');   //获取客户端IP地址

/********解释IP区域***********/

$cip=cip($ip);

$csql="select * from tb_ip where (ip1'".$cip."') or (ip1=ip2 and ip2='".$cip."')";

//执行查询

$res = $DB->fetch_one_array($csql);

$cip1=$res['country'];

if($cip1==""){

$cip1="IP不详";

}

二,实现过程

1,双击许愿字条,该字条置顶显示,并屏蔽整个页面

当用户双击许愿字条后,该许愿字条将置顶显示,同时屏蔽整个页面,以达到突出显示的效果。

(1)控制DIV突显效果,首页设置一个隐藏的DIV,ID名称为“shadeDiv”,代码如下

(2)应用Javascript脚本自定义一个Hide()函数,通过设置DIV的显示属性display设置为空,从而隐藏DIV,代码如下:

复制代码 代码如下:

function Hide(){

document.getElementById("shadeDiv").style.display = "none";

iLayerMaxNum = iLayerMaxNum+2;

}

(3)在CSS样式表中设置隐藏DIV的样式。代码如下:

#shadeDiv{filter:alpha(Opacity=55);opacity:0.35;background: #333;position:absolute;} //IE浏览器下滤镜效果,兼容性不好

(4)接下来,双击已经设计好的许愿字条DIV图层,代码如下:

οndblclick=Show(".$id.",'shadeDiv')

(5)自定义一个函数show(),用来控制背景的效果。

复制代码 代码如下:

function Show(n,divName){

document.getElementById(n).style.zIndex = iLayerMaxNum+1;

document.getElementById(divName).style.display = "block";

document.getElementById(divName).style.zIndex = iLayerMaxNum;

var size = getPageSize(); //设置隐藏区域的面积,这里是获取许愿墙显示区域的面积,即本例中设置滤镜的面积

document.getElementById(divName).style.width = size[0]+"px";

document.getElementById(divName).style.height = size[1]+"px";

}

(6)设置纸条显示的区域,这里得到的仅仅是数字

复制代码 代码如下:

function getPageSize(){

var w =document.body.clientWidth;

var h= document.body.clientHeight;

arrayPageSize = new Array(w,h);

return arrayPageSize;

}

2,应用Jpgraph图形类库实现3D饼形图表按地域统计分析许愿比率,实现过程如下:

(1)应用浮动框架技术实现不同类别下的地域统计分析结果,每一个黄颜色的版块分别是一个浮动框架.浮动框架布局的代码如下:

复制代码 代码如下:

(2)应用3D饼形图动态统计分析全部区域的许愿比率

首先应用Jpgraph类库实现图表分析,需要应用include语句引用jpgraph.php文件。代码如下:

复制代码 代码如下:

include("global.php");  //链接数据库源文件

include("jpgraph/jpgraph.php");  //引用图表分析类文件

?>

绘制饼形图需要引用jpgraph_pie.php文件。绘制3D效果的饼形图需要创建PiePlot3D类对象,PiePlot3D类在Jpgraph_pie3d.php中定义,需要应用include语句调用该文件。代码如下:

复制代码 代码如下:

include("jpgraph/jpgraph_pie.php");  //引用饼形图类文件

include_once("jpgraph/jpgraph_pie3d.php");  //引用3D饼图PiePlot3D对象所在的类文件

?>

创建graph对象,生成一个990x276像素大小的画布,设置统计图所在画布的位置以及画布的阴影。设置标题的字体以及图例的字体。设置饼形图所在画布的位置以及半径,将绘制的3D饼形图添加到图像中。

复制代码 代码如下:

$graph = new PieGraph(990,276); //创建画布

$graph->SetShadow(); //设置阴影

$graph->title->Set("应用3D饼形图统计分析全部区域许愿比率"); //设置标题名称

$graph->title->SetFont(FF_SIMSUN,FS_BOLD); //设置标题的字体加粗

$graph->legend->SetFont(FF_SIMSUN,FS_NORMAL); //设置饼形图文字的字体

$size=0.5; //设置饼形图的半径

/***********************统计全部许愿比率*************************/

//创建饼形图对象

$p0= new PiePlot3D($arraynum0); //创建饼形图对象

$p0->SetLegends($arraycip0);

$p0->SetSize($size); //设置饼形图的大小

$p0->SetCenter(0.45,0.48); //设置饼形图的坐标位置

$p0->SetLegends($arraycip0); //设置城市名称

$p0->value->SetFont(FF_FONT0); //设置字体

$p0->title->SetFont(FF_SIMSUN,FS_BOLD);  //设置标题字体加粗

/*************************************************************/

$graph->Add($p0);  //添加3D饼形图到图像中

$graph->Stroke(); //输出图像

?>

(3)应用3D饼形图动态统计分析”亲情类“的许愿比率。其实现方法与获取全部的许愿比率的方法基本类似,不同的是这里在检索亲情类许愿人数时设置了where查询条件。另外在设置饼形图的半径和位置上稍微有变化。

复制代码 代码如下:

include("global.php"); //链接数据库文件

include ("jpgraph/jpgraph.php"); //引用图表分析类文件

include ("jpgraph/jpgraph_pie.php"); //引用饼形图类文件

include_once ("jpgraph/jpgraph_pie3d.php");  //引用3D饼图PiePlot3D对象所在的类文件

/***********************统计亲情类别*************************/

$sql2="select distinct(count(cip)) as num,cip from tb_wishes where wishsort='亲情' group by cip ";

$DB->query($sql2);  //动态统计亲情类许愿

$res2=$DB->get_rows_array($sql2); //生成二维数组

$rows_count2=count($res2);  //统计二维数组的数量

$arraynum2=array(); //声明城市”亲情类“许愿总数数组

$arraycip2=array();  //声明”亲情类“城市名称数组

//解析数组

for($k=0;$k

array_push($arraynum2,$res2[$k][num]); //输出城市的许愿数量

array_push($arraycip2,$res2[$k][cip]);  //输出城市名称

}

/*************************************************************/

//创建画布

$graph = new PieGraph(320,246);  //创建画布

$graph->SetShadow(); //设置阴影

$graph->title->Set("统计分析全部区域的[ 亲情类 ] 许愿比率");  //设置标题名称

$graph->title->SetFont(FF_SIMSUN,FS_BOLD); //设置标题的字体加粗

$graph->legend->SetFont(FF_SIMSUN,FS_NORMAL); //设置饼形图文字的字体

$size=0.3;  //设置饼形图的半径

/***********************统计亲情许愿比率*************************/

$p= new PiePlot3D($arraynum2); //创建饼形图对象

$p->SetLegends($arraycip2);  //设置城市名称

$p->SetSize($size);  //设置饼形图的大小

$p->SetCenter(0.45,0.55); //设置饼形图的坐标位置

$p->value->SetFont(FF_FONT0); //设置字体

$p->title->SetFont(FF_SIMSUN,FS_BOLD); //设置标题字体加粗

/*************************************************************/

$graph->Add($p); //添加3D饼形图到图像中

$graph->Stroke(); //输出图像

?>

3,许愿墙列表,许愿墙字条高级搜索功能的实现

为了便于访客能更清晰地查看各种不同类别的许愿字条,本模块设计了爱墙列表和许愿字条高级搜索功能。其中,爱墙列表时在默认状态下检索全部的许愿字条,而高级搜索功能是按照访客设置的一定的查询条件来检索与之匹配的许愿字条。

设计爱墙列表及许愿字条高级搜索的表单元素如下:

请输入查询条件:

奥运会

汶川

爱情

亲情

友情

自己

全部

(支持多条件查询,如:爱墙号、许愿人、许愿内容等)

4,许愿墙显示效果如图:

PHP许愿墙的经济可行性,深入PHP许愿墙模块功能分析相关推荐

  1. PHP如何去制作一个许愿墙,php许愿墙开发视频教程,php许愿墙源码

    1. 模版的制作 栏目 , 背景图 2.onclick 点击 获取发布留言的表单 收信人 : 内容 : 发信人 : function show() { var tab = document.getEl ...

  2. HTML新年许愿墙代码,网页版春节许愿墙代码,兔年许愿墙代码

    HTML新年许愿墙代码,网页版春节许愿墙代码,兔年许愿墙代码 完整代码下载地址:网页版春节许愿墙代码,兔年许愿墙代码 运行效果 核心代码 <!DOCTYPE html> <html ...

  3. 小米机器人虚拟墙设置_扫地机器人虚拟墙应该怎么放置使用

    原标题:扫地机器人虚拟墙应该怎么放置使用 现在高端的智能吸尘器产品都配备了虚拟墙功能,能够有效正确指挥扫地机工作.那么,对于我们在日常使用中该如何使用虚拟墙呢? 什么是虚拟墙? 很多人购买产品的时候对 ...

  4. rust拆掉墙_rust怎么拆自己的墙

    rust游戏中可以建造自己的家,但是当建墙的时候总会觉得摆放不好,所以就需要拆除,但是要怎么拆自己的墙呢,下面小编就来为大家介绍一下吧! rust怎么拆自己的墙 要先放上领地柜,然后在墙刚建好的几分钟 ...

  5. optimize table 需要多久_逸绣墙布十大品牌,墙布的使用寿命有多久.

    本篇文章514字,读完约1分钟 墙布十大品牌  逸绣墙布,随着墙布开初成为软装的紧张一局部,良多家庭都已开初运用墙布这类装修方式,那么墙布一样平常可以运用多久呢,今天逸绣墙布就去带大师相识一下相关内容 ...

  6. html5 3d背景墙,3D背景墙的价格怎样?3D背景墙的介绍?

    3D背景墙可以随我们的喜好去更换我们房子的环境,能让我们身临其境,感受大自然的奥妙又或是漫步在外太空,也还可以让我们身处于一个古堡中,做我们的公主又或是王子的美梦.以下就是对3D背景墙的价格怎样,3D ...

  7. 小米机器人虚拟墙设置_扫地机器人虚拟墙介绍及怎样设置

    原标题:扫地机器人虚拟墙介绍及怎样设置 现在高端的智能吸尘器产品都配备了虚拟墙功能,能够有效正确指挥扫地机工作.那么,对于我们在日常使用中该如何使用虚拟墙呢? 什么是虚拟墙? 很多人购买产品的时候对虚 ...

  8. 检测到域名被墙如何解决?域名被墙怎么快速恢复?

    域名被墙是什么?域名被中国防火墙(GFW)拦住了,GFW不仅限制国内的访问国外网站,也限制国外的访问国内的网站.通常是我们的域名解析到了海外的服务器,网站上可能存在一些在国内不能传播的内容以及敏感词汇 ...

  9. WPF 实现3维图片墙相关展示效果(凹面墙,凸面墙)

    因为需求,需要做3维图片墙的相关展示效果,如凹面墙,凸面墙.由于WPF也不会(会一点C#),3D编程一点也不会,一切从零开始学习,看了<精通Windows3D图形编程>一书和参考了网上相关 ...

  10. java许愿墙_wishingWall 一个好看的许愿墙板块,功能强大,页面美观 Java Develop 238万源代码下载- www.pudn.com...

    文件名称: wishingWall下载 收藏√  [ 5  4  3  2  1 ] 开发工具: Java 文件大小: 1839 KB 上传时间: 2013-04-25 下载次数: 6 提 供 者: ...

最新文章

  1. 用Python不回头也能看美女,这招你会了吗?
  2. python装饰器-python修饰器(装饰器)以及wraps
  3. 电脑重启后python导入的库不见_为什么python不会在启动时自动导入每个模块?
  4. 【机器学习基础】机器学习理论最佳入门!周志华宝箱书搭档,开源教程《钥匙书-KeyBook》发布...
  5. 铁幕(Iron Curtain)
  6. spring缓存_有关Spring缓存性能的更多信息
  7. LeetCode 1716. 计算力扣银行的钱(等差数列)
  8. Android 系统(219)---Android O上networkAttributes的说明
  9. ffmpeg文档1:制作屏幕录像
  10. OpenFaces 3.0 最终版本发布,支持JSF2.0
  11. VLC相关参数中文说明!
  12. 知识付费平台的三种商业模式
  13. 将心比心,我要有点骨气
  14. vue之设置背景图片自适应屏幕
  15. 计算机英语中bar是什么意思啊,bar是什么意思
  16. Material Design学习总结
  17. krpano学习——xml代码
  18. android sd卡名称,科普详解Android系统SD卡各类文件夹名称
  19. 酒店行业如何借助无线认证提高营销能力
  20. CentOS 7 安装 Mysql 8.0 教程

热门文章

  1. Go程序设计语言1.1 hello,world
  2. 华三服务器管理口地址_不同型号服务器的默认管理IP及账号密码汇总
  3. CAD地形图等高线标高批量取整工具,解决等高线标高出现小数的问题,等高线高程批量取整,在指定限差内将等高线标高修改为最接近的整数
  4. win10壁纸不能幻灯片放映_教你巧妙解决雨林木风Win10系统中背景桌面无法自动播放幻灯片...
  5. PowerMockito框架入门及使用
  6. Nexus下载、安装与使用
  7. Python笔记1——Python概述
  8. 微信撤回软件安卓版_微信强制撤回app
  9. 网络:简述传统CPE向VCPE的演进
  10. 产品经理三大证书,考哪个好