?? 新建 文本文檔 (2).txt
字號:
這是一個(gè)簡單的投票程序,對于剛學(xué)PHP和朋友來說是一個(gè)很不錯(cuò)的入門程序。在這里給大家介紹一下,希望能對朋友們有所幫助。
該系統(tǒng)是由以下四個(gè)文件組成的:有HTML調(diào)查表單的survey.htm,實(shí)現(xiàn)調(diào)查功能的survey.php,記錄調(diào)查項(xiàng)目的data.txt和記錄調(diào)查結(jié)果的survey.txt.其中data.txt和survey.txt我們可以用NOTEPAD分別創(chuàng)建之,并傳到程序目錄下。文件data.txt中存的是要進(jìn)行調(diào)查的項(xiàng)目,注意每個(gè)項(xiàng)目應(yīng)占一行;而survey.txt則可以是一個(gè)什么內(nèi)容也沒有的空文件。
Survey.htm的代碼可以如如下所示:
以下為引用的內(nèi)容:<html>
<head>
<title>survey</title>
</head>
<body>
<form method="POST" action="survey.php">
<p><input type="radio" value="0" name="vote">調(diào)查項(xiàng)目一</p>
<p><input type="radio" name="vote" value="1">調(diào)查項(xiàng)目二</p>
<p><input type="radio" name="vote" value="2">調(diào)查項(xiàng)目三</p>
<p><input type="radio" name="vote" value="3">調(diào)查項(xiàng)目四</p>
<p><input type="radio" name="vote" value="4">調(diào)查項(xiàng)目五</p>
<p><input type="hidden" name="go" value="1">
<p><input type="submit" value="提交" name="B1"></p>
<a href="survey.php?result=1">查看結(jié)果</a>
</form>
</body>
</html>
注意文件data.txt中的調(diào)查項(xiàng)目與上面的調(diào)查項(xiàng)目在個(gè)數(shù)和排列順序必須保持一致,否則會出錯(cuò)或調(diào)查的結(jié)果不準(zhǔn)確。同時(shí)為了將調(diào)查結(jié)果顯示成條形圖形式,應(yīng)該準(zhǔn)備若干種不同顏色的條形圖片。如:0.gif,1.gif,2.gif,3.gif,4.gif等。
以下是實(shí)現(xiàn)調(diào)查功能的survey.php代碼:
以下為引用的內(nèi)容:
<?
data="data.txt";
votes="survey.txt";
dataf=file(data); /*讀出調(diào)查項(xiàng)目文件中的項(xiàng)目*/
file_votes=fopen(votes, "r");
line_votes=fgets(file_votes, 255); /*讀出已經(jīng)記錄的調(diào)查結(jié)果*/
fclose(file_votes);
single_vote=explode("|", line_votes); /* 并將數(shù)據(jù)按指定的字串切開,再將字串傳回到數(shù)組變量中 */
if (result!=1) /*如果已經(jīng)接受了調(diào)查*/
{
file_votes=file(votes, "r");
if (REMOTE_ADDR == file_votes[1]) /*檢查是不是同一個(gè)人*/
{
echo "<center><font color=red>您已投過票了,謝謝您的參與!</font></center>";
exit;
}
/*如果IP不重復(fù),則執(zhí)行以下程序*/
ficdest=fopen(votes, "w");
for (i=0; i<=count(dataf)-1; i++)
{
if (i == vote)
{ /*判斷選擇了哪個(gè)項(xiàng)目*/ Chinaz.com
single_vote+=1;
}
fputs(ficdest, "single_vote|"); /*將數(shù)據(jù)寫回文件*/
}
fputs(ficdest, "\nREMOTE_ADDR");/* //寫入投票者IP*/
fclose(ficdest);
result=1; /*投票成功*/
}
/*寫入投票結(jié)果后并顯示投票結(jié)果*/
if (result==1)
{
echo "<table cellpadding=10>";
for (i=0; i<=count(dataf)-1; i++)
{
/*取得投票總數(shù)*/
tot_votes+=single_vote;
}
for (i=0; i<=count(dataf)-1; i++)
{
imag=strval(i).".gif";/*判斷用哪種條形圖片來顯示統(tǒng)計(jì)結(jié)果*/
stat=single_vote/tot_votes*100; /*計(jì)算百分比*/
scla=stat*5;/*條形圖和放大倍數(shù),這里是安百分?jǐn)?shù)的5倍的相素的寬度來顯示的*/
echo "<tr><td><li><font face=Verdana size=2>";
echo "dataf</font></td><td align=left><font face=Verdana size=2>";
echo "<img src=\"imag\" height=20 width=scla align=middle> ";/*輸出條形碼圖*/
printf("%.1f", "stat");
echo "%</font></td><td align=center><font face=Verdana size=2>";
/*輸出本欄目投票數(shù)*/
echo "single_vote</font>";
echo "</td></tr>";
}
echo "</table><p>";
echo "<font face=Verdana size=2>總投票數(shù):tot_votes </font>";
}
?>
說明:
在這里為了防止一人多投是采用記錄最近的一位投票者的IP的方法來實(shí)現(xiàn)的,而最近的一位投票的IP地址是WEB客戶機(jī)在對服務(wù)器發(fā)出請求時(shí)存儲在環(huán)境變量REMOTE_ADDR中的。
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -