日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php简易在线投票系统,ThinkPHP 框架 简易投票系统

發布時間:2024/3/26 php 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php简易在线投票系统,ThinkPHP 框架 简易投票系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近學習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 框架 简易投票系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。