最近学习php框架ThinkPHP.话说学习技术最简单的方法就是动手,所以自己写了一个简单的投票系统(无美工...),环境是LAMP。

这个简单投票系统是给我班做投票用的,写的仓促,交互不好。第一次写希望大家多多包涵。

ThinkPHP的规范这里就不说了,先来项目结构。

其中3个class.*.php是发送邮件的脚本。其他文件夹的作用学过ThinkPHP的应该都清楚,在此就不解释了。

一.index.php

define('THINKPATH','./ThinkPHP/');

define('APP_NAME','Vote');

define('APP_PATH','.');

require_once(THINKPATH.'ThinkPHP.php');

APP::run();

?>

二.进入Lib/Action目录。共4个Action类文件。

先看IndexAction.class.php

// 本文档自动生成,仅供测试运行

classIndexActionextendsAction

{

publicfunctionindex(){$this->display();

}

}

?>

LoginAction.class.php

classLoginActionextendsAction{

publicfunctionindex(){

$this->display();

}

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

-对用户提交的用户信息进行检查

-***************************************************/

publicfunctioncheck(){

$snum=$_POST['snum'];

$pwd=$_POST['password'];

$User=M('classmates');//建立与数据库think_classmates表的链接

if($User->where("snum='$snum'")->getField('password')==$pwd){

session_start();//会话打开

$_SESSION['snum']=$snum;

$this->redirect('Vote/index');//跳转到用户投票页面

}

else{

$loginfailed="用户名或密码错误
";

$this->assign('loginfailed',$loginfailed);

$this->display('index');

}

}

}

?>

QuitAction.class.php

实现用户的退出功能.销毁用户 SESSION.

classQuitActionextendsAction{

publicfunctionindex(){

session_start();

unset($_SESSION['username']);

$this->redirect('Index/index');

}

}

?>

VoteAction.class.php

classVoteActionextendsAction{

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

//--显示投票首页信息 包括用户信息的显示 及

//--目前可以 进行投票的活动

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

publicfunctionindex(){

session_start();

if(isset($_SESSION['snum'])){

$snum=$_SESSION['snum'];

$User=M('classmates');

$username=$User->where("snum='$snum'")->getField('username');

$email=$User->where("snum='$snum'")->getField('email');

$hello="你好,".$username;

$quit="&nbsp|&nbsp退出
";

$information="用户信息:
"."真实姓名:".$username."
邮箱:".$email;

$reset="重填";

$this->assign('hello',$hello);

$this->assign('quit',$quit);

$this->assign('information',$information);

$this->assign('reset',$reset);

$this->assign();

$this->display();

}

else

$this->redirect('Index/index');

}

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

//--用户信息重置 包括用户真实姓名,密码,

//--电子邮件地址的设置

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

publicfunctionresets(){

session_start();

if(isset($_SESSION['snum'])){

$this->display();

}

else

$this->redirect('Index/index');

}

publicfunctionupdate(){

session_start();

if(isset($_SESSION['snum'])){

$User=M('classmates');

$snum=$_SESSION['snum'];

$data['username']=$_POST['username'];

$data['password']=$_POST['password'];

$data['email']=$_POST['email'];

$User->where("snum='$snum'")->save($data);

$updatesuccess="信息更新成功
";

$this->assign('updatesuccess',$updatesuccess);

$this->redirect('Vote/index');

}

else

$this->redirect('Index/index');

}

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

//--用户参与的一个投票活动。

//--主要功能是判断用户参与的是哪种投票活动

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

publicfunctionvote(){

if(isset($_SESSION['snum'])){

$id=$_GET['id'];

/*if($id==1)

echo "精神文明";

`else if ($id==2)

echo "优秀团员";*/

if($id==1){

$actionname="精神文明投票:
";

$actiontype='jingshenwenming';

}

elseif($id==2){

$actionname="优秀团员投票:
";

$actiontype='youxiutuanyuan';

}

$this->assign('actionname',$actionname);

$this->assign('actiontype',$actiontype);

$this->display();}

else

$this->redirect('Index/index');

}

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

//--对用户的投票进行计算,并更新数据库

//--显示用户此次投票活动的选择

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

publicfunctioncalculate(){

if(isset($_SESSION['snum'])){

$actiontype=$_GET['type'];//获得投票活动类型

$schoolnumber=array();//声明复选框数组

$schoolnumber=$_POST['schoolnumber'];

$list='你选的候选人如下:
';//显示提示信息

$Can=M('final');//创建投票活动表连接

$User=M('classmates');//创建用户信息表连接

foreach($schoolnumberas$candidate){

if($candidate!=''){//如果某个人被选中

$data[$actiontype]=$Can->where("snum='$candidate'")->getField($actiontype);

$data[$actiontype]++;

$Can->where("snum='$candidate'")->save($data);

$list.=$User->where("snum='$candidate'")->getField('username');

$list.='
';

}

}

$this->assign('list',$list);

$this->display();

}

else

$this->redirect('Index/index');

}

}

?>

三.进入项目目录下的/Tpl/default/目录 共3个模板目录。

进入Index :

index.html

欢迎投票中心

登录

进入Login:

index.html

0903的娃赶快登录吧~

{$loginfailed}

学&nbsp号:

密&nbsp码:

进入Vote:

共4个模板文件。

index.html

投票~

{$loginsuccess}

{$hello}{$quit}

{$information}

{$reset}

你的投票:

投票活动

状态

精神文明 未投票
优秀团员 未投票

resets.html

用户信息~

真实姓名:

&nbsp密&nbsp&nbsp&nbsp&nbsp码&nbsp:

e-mail&nbsp&nbsp&nbsp:

calculate.html

投票结果~

{$list}

返回

vote.html

投票~

{$actionname}

李嘉峻

闻亦晨

高子涵

四.回到主项目目录。解释一下三个class.*.php文件。这三个文件是phpmailer解压后得到的文件,将它们复制到项目中就可以使用phpmailer发送邮件了。

最后一个文件是Mail.php 实现邮件的发送功能。

require("class.phpmailer.php");

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

//--应用linux的crontab来定时执行此脚本,

//--如果到达定时的时刻则向think_classmates

//--中所有的用户发送投票结果的邮件

//--在规定时间之前没有投票的用户算作放弃

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

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

//--连接数据库函数

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

functionConnect(){

$conn=@mysql_connect("localhost","root","changyisheng");

if(!$conn){

die("连接数据库失败:".mysql_error());

}

mysql_select_db("Vote",$conn);

mysql_query("set character set 'utf8'");

}

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

//--将表中的用户数据根据活动分表

//--每一个投票活动一个数组

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

functionDataToArray(){

//$User=M('final');//查询表think_final

//$list=$User->select();

Connect();//连接数据库

$sql="SELECT * FROM think_final";

$list=mysql_query($sql);//进行查询

while($tt=mysql_fetch_array($list)){

$snum=$tt['snum'];

$actionname1=$tt['jingshenwenming'];

$actionname2=$tt['youxiutuanyuan'];

$list1[$snum]=$actionname1;

$list2[$snum]=$actionname2;

}

$result[0]=$list1;

$result[2]=$list2;

return$result;

}

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

//--将传进来的$array数组根据票数进行排序

//--结果返回排序好的数组

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

functionArrayToData($array){

foreach($arrayas$action){

arsort($action);

$list[]=$action;

}

//  dump($list);

return$list;

}

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

//--将排序好的数组中学号翻译成学生姓名

//--结果返回一个文本(对人友好的)

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

functionNumberToName($array){

//$User=M('classmates');//学生信息数据库

Connect();

$sql="SELECT * FROM think_classmates";

//进行查询

$mark=1;

foreach($arrayas$action){

if($mark==1)

$list.="精神文明投票结果:
";

elseif($mark==2)

$list.="优秀团员投票结果
";

$mark++;

foreach($actionas$snum=>$value){

//echo $snum;//输出学生学号

//$username=$User->where("snum='$snum'")->getField('username');//获得学生姓名

$array=mysql_query($sql);

while($row=mysql_fetch_array($array)){

if($row['snum']==$snum){

$username=$row['username'];

$list.=$username.":".$value."票
";

break;

}

}

}

}

return$list;

}

if(time()==mktime(11,16)){

//连接数据库

$mail=newPHPMailer();//建立邮件发送类

$mail->IsSMTP();//使用SMTP发送发送

$mail->Host="smtp.qq.com";//您的企业邮局域名

$mail->SMTPAuth=true;//启用SMTP验证功能

$mail->Username="632849504@qq.com";//邮局用户名

$mail->Password="changyisheng";//邮局密码

$mail->Port=25;

$mail->From="632849504@qq.com";//邮件发送者email地址

$mail->FromName="icys";

$conn=@mysql_connect("localhost","root","changyisheng");

if(!$conn){

die("连接数据库失败:".mysql_error());

}

mysql_select_db("Vote",$conn);

mysql_query("set character set 'utf8'");

$sql="SELECT * FROM think_classmates";

$result=mysql_query($sql);//进行查询

while($row=mysql_fetch_array($result)){

//  echo "学号:".$row['snum']."
";

//  echo "真实姓名:".$row['username']."
";

//  echo "密码:".$row['password']."
";

//  echo "email".$row['email']."
";

$address=$row['email'];//接收方邮箱地址

$username=$row['username'];//收件人姓名

$mail->AddAddress("$address","username");//收件人地址,收件人姓名

$mail->IsHTML(true);//以HTML方式进行发送

$mail->Subject="投票结果";

//$mail->Body="Hello";

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

//--邮件内容

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

$array=DataToArray();

//var_dump($array);

$array=ArrayToData($array);

//var_dump($array);

$list=NumberToName($array);

$mail->Body=$list;

if(!$mail->Send()){

echo"邮件发送失败.

";

echo"错误原因:".$mail->ErrorInfo;

exit;

}

//echo "邮件发送成功";

}

}

?>

最后要实现定时发送邮件的功能(我是每天的11点16分给我的邮箱发送邮件)要更改一下crontab文件 。linux下是在命令行下 crontab -e 回车

在最底下(因为原来没有设过)加入下面一行*/1 * * * /usr/bin/php   /var/www/htdocs/Vote/Mail.php

至于其中每一项代表什么,大家可以查一下crontab网上有很多讲解。

数据库设计如下:

think_classmates表:

think_final表:

php简易在线投票系统,ThinkPHP 框架 简易投票系统相关推荐

  1. php 票务系统开发_客车票务系统thinkPHP框架搭建

    public目录index.php入口文件 // +---------------------------------------------------------------------- // ...

  2. HTML5简易在线画图工具

    HTML5简易在线画图工具 原文:HTML5简易在线画图工具 继上次学习了HTML5的路径画圆做了动态时钟.异次元空间的反转做了运动的太阳系,这两天将画线.画圆.填充等知识点结合起来做了一个简易的在线 ...

  3. 教学资源管理软件PHP,应用ThinkPHP框架的教学资源科研管理平台设计研究

    谢业斌 摘 要:ThinkPHP属于一种计算机领域的开发解决方案,具有一定的系统整体性,可实现应用开发过程中的各种功能优化与应用.在职业教育专业体系中,主要应用ThinkPHP框架设计搭建教学资源科研 ...

  4. 大型公共建筑能耗监测系统软件平台框架探讨

    摘 要]本文以大型公建能耗监测系统软件平台框架设计和开发应用为主线,从能耗监测系统的规划建设出发,提出能耗监测软件平台的框架设计和关键技术点的处理方法,并针对北京市能耗监测系统的实际建设应用情况进行了 ...

  5. php简易投票系统设计,如何使用php做出简易在线投票系统

    如何使用php做出简易在线投票系统 发布时间:2020-07-16 14:16:35 来源:亿速云 阅读:80 作者:Leah 如何使用php做出简易在线投票系统?针对这个问题,这篇文章详细介绍了相对 ...

  6. 简易在线投票系统(php)——前端设计(html部分)

    简易在线投票系统要求能够支持用户账号的登录和注册,可以进行发起投票.进行投票.查看结果的功能.首先通过前端设计,为各个功能的实现做好准备. 这个项目的初衷只是为了应付学校的检查,所以在前端的设计上,力 ...

  7. 简易在线投票系统(php)——投票页面

    登陆后才可以进入投票页面,否则将自动回到主页.投票页面分为多选和单选两种形式.在投票完成后根据投票活动发布时设置的是否允许查看结果来确定是否自动跳转到结果页面.若不允许,会自动弹出提示框,并返回主页. ...

  8. 基于JAVA简易在线教学系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA简易在线教学系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA简易在线教学系统计算机毕业设计源码+系统+mysql数据库+lw文档+部署 本源码技术栈: 项目架构 ...

  9. java计算机毕业设计简易在线教学系统源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计简易在线教学系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计简易在线教学系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈: 项目架构:B/S ...

最新文章

  1. 2021年大数据常用语言Scala(二十二):函数式编程 映射 map
  2. Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读
  3. Hadoop入门实例——WordCount统计单词
  4. MVC新手教程三:Entity Framework 4.0 来实现MVC的增删改查功能,10分钟搞定
  5. Django框架深入了解_04(DRF之url控制、解析器、响应器、版本控制、分页)(二)
  6. UVA 10895——Matrix Transpose
  7. ASP.NET 2.0服务器控件与组件开发中文版即将出版
  8. UNIX网络编程——使用线程的TCP回射服务器程序
  9. 【数据结构----笔记5】插入排序算法之【希尔排序算法】
  10. 国内的优秀HTML5前端开发框架
  11. Facebook正在追踪你,哪怕你不是用户丨扎克伯格国会听证第二日
  12. mysql 日志大小_查看mysql日志文件大小和数据库大小
  13. opencv 识别长方形_利用opencv识别并提取图片中的矩形
  14. php cc攻击代码,PHP DDOS的UDP攻击,TCP攻击,和CC攻击的核心代码
  15. python调用百度AI语音识别
  16. 惊爆:Alexa 全球排名网站即将关闭
  17. 华为设备,什么是MAC地址漂移
  18. 蓝桥杯入门练习题斐波那契数列
  19. 伦敦的威斯敏斯特大教堂地下室的墓碑林中,一块震撼全世界的一段碑文。
  20. 论文写作-引言怎么写

热门文章

  1. 易语言获取html源码,易语言穿透所有框架取网页元素源码
  2. Android misc
  3. 大连理工大学计算机软件,大连理工大学计算机软件初试全书.pdf
  4. 写一个php web符号打印成沙漏的形状,打印
  5. python +tkinter 打造网易云音乐下载播放器
  6. c语言外部显卡驱动程序,可以用c语言或者c++来直接调用显卡驱动控制显示器上的某个点吗...
  7. MikroTik RouterOS上网设置
  8. PotPlayer的官网
  9. 淘宝 商品定制 C2B 全流程。
  10. 弟中弟的Leetcode总结——数组类(七)