一個簡單的PHP投票程式源碼_php執行個體

來源:互聯網
上載者:User
分析: 
我們利用一個檔案(data.dat)來儲存投票欄目.每個欄目佔據一行. 
這樣一來,便可隨意加入和減去想要投票的欄目. 
我們再利用一個檔案(votes.dat)來儲存我們的投票結果. 
並紀錄最近一位投票者的IP地址,簡單的防止一人多投. 
所以,您應該在該程式目錄下自行建立兩個檔案data.dat和votes.dat 
程式運行過程部分 
程式運行時應該先有一個投票的HTML表單,等待投票. 
當有人在HTML表單上投票時,判斷它的IP是否為最近一位投票者的IP, 
如果此人剛剛投過票,則兩個值應該相等,顯示"您已投過票了,謝謝您的參與!"  
如果此人沒投過票,則兩個值不等,將它的投票寫入檔案(votes.dat)  
(這裡得到投票者的IP方法是:Web客戶機在對伺服器發送請求時需要提供一個表識, 
這個表識就儲存在環境變數REMOTE_ADDR裡,我們引用它就可以了.) 
最後是顯示投票結果,通常我們是以"橫條圖表+百分數"來顯示投票情況. 
所以,我們要選擇一個顏色單一的矩形圖形,以適應橫向縮放的要求.  
-------------------------------------------------------------------------------- 
程式碼部分 可下載程式代碼 
  //投票欄目隱藏檔,您可變更檔名 
$data="data.dat";  
//投票結果儲存檔案  
$votes="votes.dat"; 
//用以顯示投票結果比例的圖形檔案名稱圖形檔案名稱,  
//用單一顏色的矩形較好,方便投票結果橫向縮放,  
//自行上傳到本程式目錄下  
$path_img="vote.gif"; 
//投票標題 
$poll_name="您喜歡我的哪個欄目?";  
// 以下部分不需改動 //  
//開啟投票欄目檔案,並以數組的形式將全部內容存在變數$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'>查看結果</a>";  
}  
else  
{  
// $go==1 表示有人投票, // 現在將投票情況以另外一種方式從檔案中讀出 $file_votes=fopen($votes, "r");  
$line_votes=fgets($file_votes, 255);  
fclose($file_votes); 
// 並將資料按指定的字串切開,再將字串傳回到陣列變數中  
$single_vote=explode("|", $line_votes);  
//準備寫入投票結果  
if ($result!=1)  
{  
//檢查IP地址是否重複  
$file_votes=file($votes, "r");  
if ($REMOTE_ADDR == $file_votes[1])  
{  
echo "<center><font color=red>您已投過票了,謝謝您的參與! </font>    </center>"; 
exit; 

//如果IP不重複,則執行以下程式  
$ficdest=fopen($votes, "w");  
for ($i=0; $i<=count($dataf)-1; $i++) 
{  
//判斷投了那一個欄目  
if ($i == $vote)  
{  
$single_vote[$i]+=1; 
}  
//將資料寫迴文件  
fputs($ficdest, "$single_vote[$i]|");  
}  
//寫入投票者IP  
fputs($ficdest, "n$REMOTE_ADDR");  
fclose($ficdest); 
$result=1; //投票成功 
}  
//寫入投票結果後並顯示投票結果  
if ($result==1)  
{ echo "<table cellpadding=10>";  
for ($i=0; $i<=count($dataf)-1; $i++)  
{  
//取得投票總數 
$tot_votes+=$single_vote[$i];  
}  
for ($i=0; $i<=count($dataf)-1; $i++)  
{  
//計算百分比  
$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> ";  
//輸出百分數 printf("%.1f", "$stat[$i]");  
echo "%</font></td><td align=center><font face=Verdana size=2>"; //輸出本欄目投票數  
echo "$single_vote[$i]</font>"; echo "</td></tr>";  
}  
echo "</table><p>";  
echo "<font face=Verdana size=2>總投票數:$tot_votes </font>";  


?> 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.