国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > PHP > 正文

PHP實(shí)例剖析:投票程序

2024-05-04 23:02:17
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友



  這是一個(gè)簡(jiǎn)單的投票程序,不需要數(shù)據(jù)庫(kù)的支持.本程序容易理解,容易上手,是個(gè)不錯(cuò)的入門(mén)程序.缺點(diǎn):占用服務(wù)器太多時(shí)間,有待改進(jìn).

可隨意使用

分析:
我們利用一個(gè)文件(data.dat)來(lái)存儲(chǔ)投票欄目.每個(gè)欄目占據(jù)一行.
這樣一來(lái),便可隨意加入和減去想要投票的欄目.

我們?cè)倮靡粋€(gè)文件(votes.dat)來(lái)存儲(chǔ)我們的投票結(jié)果.
并紀(jì)錄最近一位投票者的ip地址,簡(jiǎn)單的防止一人多投.

所以,您應(yīng)該在該程序目錄下自行建立兩個(gè)文件data.datvotes.dat

程序運(yùn)行過(guò)程部分

程序運(yùn)行時(shí)應(yīng)該先有一個(gè)投票的html表單,等待投票.
當(dāng)有人在html表單上投票時(shí),判斷它的ip是否為最近一位投票者的ip,
如果此人剛剛投過(guò)票,則兩個(gè)值應(yīng)該相等,顯示"您已投過(guò)票了,謝謝您的參與!"
如果此人沒(méi)投過(guò)票,則兩個(gè)值不等,將它的投票寫(xiě)入文件(votes.dat)
(這里得到投票者的ip方法是:web客戶(hù)機(jī)在對(duì)服務(wù)器發(fā)送請(qǐng)求時(shí)需要提供一個(gè)表識(shí),
這個(gè)表識(shí)就存儲(chǔ)在環(huán)境變量remote_addr里,我們引用它就可以了.)

最后是顯示投票結(jié)果,通常我們是以"條形圖表+百分?jǐn)?shù)"來(lái)顯示投票情況.
所以,我們要選擇一個(gè)顏色單一的矩形圖形,以適應(yīng)橫向縮放的要求.

程序代碼部分

    //投票欄目存儲(chǔ)文件,您可更改文件名
$data="data.dat";

//投票結(jié)果儲(chǔ)存文件
$votes="votes.dat";

//用以顯示投票結(jié)果比例的圖形文件名圖形文件名,
//用單一顏色的矩形較好,方便投票結(jié)果橫向縮放,
//自行上傳到本程序目錄下
$path_img="vote.gif";

//投票標(biāo)題
$poll_name="您喜歡我的哪個(gè)欄目?";


// 以下部分不需改動(dòng) //


//打開(kāi)投票欄目文件,并以數(shù)組的形式將全部?jī)?nèi)容存在變量$dataf中備用
$dataf=file($data);
if ($go !=1)

{
//顯示投票程序表單
echo "<font color=red><i>$poll_name</i></font><br>/n";
echo "<form method=post>";
for ($i=0; $i<=count($dataf)-1; $i++)

{
echo "<input type=radio name=/"vote/" value=/"$i/"> $dataf[$i]<br>/n"; }

echo "<input type=hidden name=go value=1>";
echo "<p><input type=submit value=投票>";
echo "</form>";
echo "<a href='vote.php?result=1&go=1'>查看結(jié)果</a>";

}

else

{
// $go==1 表示有人投票, // 現(xiàn)在將投票情況以另外一種方式從文件中讀出 $file_votes=fopen($votes, "r");
$line_votes=fgets($file_votes, 255);
fclose($file_votes);

// 并將數(shù)據(jù)按指定的字串切開(kāi),再將字串傳回到陣列變量中
$single_vote=explode("|", $line_votes);

//準(zhǔn)備寫(xiě)入投票結(jié)果
if ($result!=1)

{
//檢查ip地址是否重復(fù)
$file_votes=file($votes, "r");
if ($remote_addr == $file_votes[1])

{
echo "<center><font color=red>您已投過(guò)票了,謝謝您的參與! </font>    </center>";
exit;
}

//如果ip不重復(fù),則執(zhí)行以下程序
$ficdest=fopen($votes, "w");
for ($i=0; $i<=count($dataf)-1; $i++)

{
//判斷投了那一個(gè)欄目
if ($i == $vote)

{
$single_vote[$i]+=1;
}

//將數(shù)據(jù)寫(xiě)回文件
fputs($ficdest, "$single_vote[$i]|");

}

//寫(xiě)入投票者ip
fputs($ficdest, "/n$remote_addr");
fclose($ficdest);
$result=1; //投票成功

}


//寫(xiě)入投票結(jié)果后并顯示投票結(jié)果
if ($result==1)

{ echo "<table cellpadding=10>";
for ($i=0; $i<=count($dataf)-1; $i++)

{
//取得投票總數(shù)
$tot_votes+=$single_vote[$i];
}

for ($i=0; $i<=count($dataf)-1; $i++)

{
//計(jì)算百分比
$stat[$i]=$single_vote[$i]/$tot_votes*100;
echo "<tr><td><li><font face=verdana size=2>";
echo "$dataf[$i]</font></td><td align=left><font face=verdana       size=2>";
echo "<img src=/"$path_img/" height=10 width=$stat[$i] align=middle> ";
//輸出百分?jǐn)?shù) printf("%.1f", "$stat[$i]");
echo "%</font></td><td align=center><font face=verdana size=2>"; //輸出本欄目投票數(shù)
echo "$single_vote[$i]</font>"; echo "</td></tr>";
}

echo "</table><p>";
echo "<font face=verdana size=2>總投票數(shù):$tot_votes </font>";
}

}

?>

 

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 廉江市| 张掖市| 汽车| 富平县| 滨海县| 黑水县| 永寿县| 从江县| 安塞县| 曲松县| 庆云县| 平陆县| 雅安市| 黔西| 苍山县| 治多县| 陆河县| 维西| 南投市| 邯郸县| 梨树县| 台安县| 汾阳市| 新河县| 平江县| 福清市| 辉南县| 桂平市| 五大连池市| 阿巴嘎旗| 南宫市| 寿宁县| 外汇| 灵石县| 吉林省| 承德市| 韩城市| 华容县| 万荣县| 大邑县| 长葛市|