2015-11-05 71 views
0

我有一個php代碼,投票我想阻止用戶投票兩次。我想檢查用戶是否已經投票,並防止他們再次投票。 這是我下面的代碼:我想阻止用戶投票超過一次

<?php 
    include('conn.php'); 
    $expire = 24*3600*30; //after one day 
    setcookie('SnugglesVotingSystem'.$_POST['id'], 'voted', time() + $expire, '/');  // Place a cookie 
    if($_POST) 
    { 
    try{ 
    $query = "UPDATE tbl_images SET up =up".$_POST['value']." WHERE  id=".$_POST['id'].""; // Update number with +1 or -1 
     // Prepare statement 
    $stmt = $DB->prepare($query); 
    // execute the query 
    $stmt->execute(); 
    // echo a message to say the UPDATE succeeded 
    echo $stmt->rowCount(); 
    } 
    catch(PDOException $e) 
    { 
    echo $query . "<br>" . $e->getMessage(); 
    } 
    $value = "SELECT up FROM tbl_images WHERE id=".$_POST['id'].""; // Get the new number value 
    $stmt = $DB->prepare($value); 
      $stmt->execute(); 
      $images = $stmt->fetchAll(); 
    if (is_array($value) && isset($_POST['up'])) { 

    echo $value['up']; 
} 
    //echo $value['up']; // Send back the new number value 
} 
?> 
+0

問題是什麼? –

+2

可愛[sql注入攻擊](http://bobby-tables.com)漏洞。享受你的服務器pwn3d。 –

+1

只是一個小指針......你並沒有在這裏正確地使用準備好的語句。您仍將用戶輸入直接放入您的查詢中。 –

回答

1

您需要保存某種標誌在你的數據庫,以確定是否該用戶已經投票了這一形象。對於每張投票,不要只保留一張圖片的總票數,而應將新記錄插入新的image_votes表中。該記錄只包含user_id和image_id。然後,您可以計算任何用戶的投票或圖像的投票數,並且您可以輕鬆地在該表上執行SELECT操作以查看用戶是否已投票,然後通知他們不能再投票或爲其插入一行。

相關問題