2011-03-14 12 views
0

我想做一個投票部分,這樣當用戶點擊一個鏈接時,它會添加一個數字(限制爲一個對等IP或類似的東西)。會話:點擊提高號碼

例如:

凱爾特人:0(點擊投)-----------這個人是cliked

湖人:0(點擊投)


凱:1

湖人:0


會話或PHP編碼如何實現?

有什麼想法?

+0

如果您只是使用PHP,將沒有無縫的方式來做到這一點,它將需要付費重新加載。這可以嗎?如果沒有,您還需要使用JavaScript。 – Prisoner 2011-03-14 00:41:57

+0

AJAX通常也用於這類事情。 – JakeSteam 2011-03-14 00:53:16

+0

支付重新加載是好的... javascript會很好..是否有教程與AJAX一起使用? – Norman 2011-03-14 04:35:10

回答

0

會話可以用來提供的投票是否已經作出或不立即測試:

// if session hasn't voted 
if(!$_SESSION['voted']){ 

    // VOTING LOGIC 

    // set session to have voted 
    $_SESSION['voted'] = true; 

} 

然而,僅靠會議將不能保證單個用戶不能再次投票(會話後立即失去了清除瀏覽器緩存/ cookies)一旦您的投票邏輯觸發,您將需要存儲從$_SERVER['REMOTE_ADDR']中捕獲的IP地址。

// if session hasn't voted 
if(!$_SESSION['voted']){ 

    // if ip address hasn't voted 
    if(!$ip_addresses[$_SESSION['REMOTE_ADDR']]){ 

     // VOTING LOGIC 

     // set session and ip address to have voted 
     $_SESSION['voted'] = true; 
     $ip_addresses[$_SESSION['REMOTE_ADDR']] = true; 
    } 

} 

IP地址不應像本示例所要求的那樣全部檢索。相反,您應該查詢外部媒體(文件/數據庫)以確定給定的客戶是否投了票。這當然只是一個示例實現,但是這將是我想要快速執行任務的腳本的方向。您還需要確保在給定時間後釋放IP地址,以確保來自相同IP地址但不同客戶端的後續連接可以投票。

這實際上取決於您想要減少重複投票的數量。用戶註冊和基於用戶帳戶的限制 - 或者 - 基於需要確認的電子郵件地址的投票限制將更加可靠,但是其中的開銷遠遠超過我現在可以描述的。

+0

嗯。 thnx ..它很好。如果我想使用第一個,可以在網頁中實際使用哪些代碼(php或html)進行可視化?如果我想使用第二個,我只需從數據庫中調用一個ip字段,以便它可以在存儲時被存儲?第二個有點複雜,你有一個很好的過程? – Norman 2011-03-14 04:33:45

+0

如果你第一次和第二次提到我的代碼示例,它們不是真正可互換的。第二個代碼示例是第一個更完整的擴展。另外,正如** Jake **所提到的,爲了立即發生頁面上的變化(假設點擊成功),您可能希望將其作爲AJAX事務執行。 – Dan 2011-03-14 04:41:10

+0

好的。所以如果我用你的第一個代碼與Ajax它會自動出現在頁面上?我怎樣才能執行這個AJAX事務?用某種代碼? – Norman 2011-03-14 04:47:51