ThinkPHP框架简易投票系统
最近学习php框架ThinkPHP.话说学习技术最简单的⽅法就是动⼿,所以⾃⼰写了⼀个简单的投票系统(⽆美⼯...),环境是LAMP。这个简单投票系统是给我班做投票⽤的,写的仓促,交互不好。第⼀次写希望⼤家多多包涵。
ThinkPHP的规范这⾥就不说了,先来项⽬结构。
其中3个class.*.php是发送邮件的脚本。其他⽂件夹的作⽤学过ThinkPHP的应该都清楚,在此就不解释了。
泡豆子作文
⼀.index.php
⽅
1. <?php
2. define('THINKPATH','./ThinkPHP/');
3. define('APP_NAME','Vote');
4. define('APP_PATH','.');
5. require_once(THINKPATH.'ThinkPHP.php');
6. APP::run();
7. ?>
⼆.进⼊Lib/Action⽬录。共4个Action类⽂件。
先看IndexAction.class.php
1. <?php
2. // 本⽂档⾃动⽣成,仅供测试运⾏
3. class IndexAction extends Action
4. {
5. public function index(){
$this->display();
6. }
7. }
8. ?>
LoginAction.class.php
1. <?php
2. class LoginAction extends Action{
3. public function index(){
4. $this->display();
5. }
6. /****************************************************
7. -对⽤户提交的⽤户信息进⾏检查集资建房
8. -***************************************************/
9. public function check(){
10. $snum=$_POST['snum'];
11. $pwd=$_POST['password'];
12. $Ur=M('classmates');//建⽴与数据库think_classmates表的链接
13. if($Ur->where("snum='$snum'")->getField('password')==$pwd){
14. ssion_start();//会话打开
15. $_SESSION['snum']=$snum;
16. $this->redirect('Vote/index');//跳转到⽤户投票页⾯
17. }
18. el{
19. $loginfailed="⽤户名或密码错误<br/>";
20. $this->assign('loginfailed',$loginfailed);
21. $this->display('index');
22. }
23. }
24. }
25. ?>
QuitAction.class.php
实现⽤户的退出功能.销毁⽤户 SESSION.
1. <?php
2. class QuitAction extends Action{
3. public function index(){
4. ssion_start();
5. unt($_SESSION['urname']);
6. $this->redirect('Index/index');
7. }
8. }
9. ?>
VoteAction.class.php
1. <?php
2. class VoteAction extends Action{
3. /******************************************/
4. //--显⽰投票⾸页信息 包括⽤户信息的显⽰ 及猪洗澡的照片
抒情小赋5. //--⽬前可以 进⾏投票的活动
6. /*******************************************/
7. public function index(){
8. ssion_start();
9. if(ist($_SESSION['snum'])){
10. $snum=$_SESSION['snum'];
11. $Ur=M('classmates');
12. $urname=$Ur->where("snum='$snum'")->getField('urname');
13. $email=$Ur->where("snum='$snum'")->getField('email');
腌生姜
14. $hello="你好,".$urname;
15. $quit=" | <a href='__APP__/Quit'>退出</a><br/>";
16. $information="⽤户信息:<br/>"."真实姓名:".$urname."<br/>邮箱:".$email;
17. $ret="<a href='__APP__/Vote/rets'>重填</a>";遥远的远方
18. $this->assign('hello',$hello);
19. $this->assign('quit',$quit );
20. $this->assign('information',$information);
21. $this->assign('ret',$ret);
22. $this->assign();
23. $this->display();
24. }
25. el
26. $this->redirect('Index/index');
27. }
28. /***************************************************/
29. //--⽤户信息重置 包括⽤户真实姓名,密码,
30. //--电⼦邮件地址的设置
31. /**************************************************/
32. public function rets(){
33. ssion_start();
34. if(ist($_SESSION['snum'])){
35. $this->display();
36. }
37. el
38. $this->redirect('Index/index');
39. }
40. public function update(){
41. ssion_start();
42. if(ist($_SESSION['snum'])){
43. $Ur=M('classmates');
44. $snum=$_SESSION['snum'];
45. $data['urname']=$_POST['urname'];
46. $data['password']=$_POST['password'];
47. $data['email']=$_POST['email'];
48. $Ur->where("snum='$snum'")->save($data);
49. $updatesuccess="信息更新成功<br/>";
50. $this->assign('updatesuccess',$updatesuccess);
51. $this->redirect('Vote/index');
52. }
53. el
54. $this->redirect('Index/index');
55. }
56. /*******************************************************/
57. //--⽤户参与的⼀个投票活动。
58. //--主要功能是判断⽤户参与的是哪种投票活动
59. /******************************************************/
60. public function vote(){
61. if(ist($_SESSION['snum'])){
62. $id=$_GET['id'];
63. /*if($id==1)
64. echo "精神⽂明";
65. `el if ($id==2)
66. echo "优秀团员";*/
67. if($id==1){
68. $actionname="精神⽂明投票:<br/>";
69. $actiontype='jingshenwenming';
70. }
71. el if ($id==2){
72. $actionname="优秀团员投票:<br/>";
73. $actiontype='youxiutuanyuan';
74. }
75. $this->assign('actionname',$actionname);
76. $this->assign('actiontype',$actiontype);
77. $this->display();}
78. el
79. $this->redirect('Index/index');
80.
81. }
82. /*****************************************************************/
83. //--对⽤户的投票进⾏计算,并更新数据库
84. //--显⽰⽤户此次投票活动的选择
85. /*****************************************************************/
86. public function calculate(){
87. if(ist($_SESSION['snum'])){
88. $actiontype=$_GET['type'];//获得投票活动类型
89. $schoolnumber=array();//声明复选框数组
90. $schoolnumber=$_POST['schoolnumber'];
91. $list='你选的候选⼈如下:<br/>';//显⽰提⽰信息
92. $Can=M('final');//创建投票活动表连接
93. $Ur=M('classmates');//创建⽤户信息表连接
94. foreach($schoolnumber as $candidate){
95. if($candidate!=''){//如果某个⼈被选中
96. $data[$actiontype]=$Can->where("snum='$candidate'")->getField($actiontype);
97. $data[$actiontype]++;
98. $Can->where("snum='$candidate'")->save($data);
99. $list.=$Ur->where("snum='$candidate'")->getField('urname');
形容开心的成语100. $list.='<br/>';
101. }
102. }
103. $this->assign('list',$list);
革命草
104. $this->display();
105. }
106. el
107. $this->redirect('Index/index');
108. }
109. }
110. ?>
三.进⼊项⽬⽬录下的/Tpl/default/⽬录 共3个模板⽬录。
进⼊Index :
index.html
1. <html>
2. <head><title>欢迎投票中⼼</title></head>
3. <body>
4. <a href='__APP__/Login'>登录</a>
5. <body>
6. </html>
进⼊Login:
index.html
1. <html>
2. <head><title>0903的娃赶快登录吧~</title></head>
3. <body>
4. {$loginfailed}
5. <form method='post' action='__APP__/Login/check'>
6. 学 号:<input name='snum' type='text' size='20'/><br/>
7. 密 码:<input name='password' type='password' size='20'/><br/>
8. <input name='submit' type='submit' value='登录'/>
9. </form>
10. </body>