2017-04-04 78 views
-1

我已經使用了別人使用ipaddress方式的代碼。但是,我想使用一個代碼來檢查當前的用戶ID和ID號。我想實現一些不允許用戶多次訪問的東西

$ipaddress = md5($_SERVER['REMOTE_ADDR']); // here I am taking IP as UniqueID but you can have user_id from Database or SESSION 

/* Database connection settings */ 
$con = mysqli_connect('localhost','root','','database'); 

if (mysqli_connect_errno()) { 
    echo "<p>Connection failed:".mysqli_connect_error()."</p>\n"; 
} /* end of the connection */ 

if (isset($_POST['rate']) && !empty($_POST['rate'])) { 
    $rate = mysqli_real_escape_string($con, $_POST['rate']); 
    // check if user has already rated 
    $sql = "SELECT `id` FROM `tbl_rating` WHERE `user_id`='" . $ipaddress . "'"; 
    $result = mysqli_query($con, $sql); 
    $row = mysqli_fetch_assoc();//$result->fetch_assoc(); 
    if (mysqli_num_rows($result) > 0) { 
     //$result->num_rows > 0) { 
     echo $row['id']; 
    } else { 
     $sql = "INSERT INTO `tbl_rating` (`rate`, `user_id`) VALUES ('" . $rate . "', '" . $ipaddress . "'); "; 
     if (mysqli_query($con, $sql)) { 
      echo "0"; 
     } 
    } 
} 
//$conn->close(); 
+0

那麼,你在試圖看到什麼問題? –

+0

我不確定如何操作?我是新來的php ... –

+0

我很感激某人的幫助,因爲我需要這個爲我的最後一年項目 –

回答

5

在你的數據庫表中,設置user_idUNIQUE KEY。這樣,如果用戶試圖投第二票,那麼數據庫將拒絕INSERT查詢,並且當受影響的行= 0時,您可以只顯示一條消息。

或者,(從UX角度來看更好),您可以搶先做的登錄用戶SELECT查詢加載網頁內容之前:

$query="SELECT `rate` FROM `tbl_rating` WHERE user_id=? LIMIT 1;"; 
if($stmt=$con->prepare($query)){ 
    $stmt->bind_param('s',$ipaddress); // or however you are IDing your users 
    $stmt->execute(); 
    $stmt->store_result(); 
    if($stmt->num_rows>0){ 
     // already rated 
    }else{ 
     // not yet rated 
    } 
    $stmt->close(); 
} 

如果他們已經在表中有一排,然後甚至不給他們重新提交的機會。

+1

是的。這應該正常工作。但我建議添加一個新表,其中包含user_id,post_id(或any_id)以及true或false的布爾字段。這樣,如果同一個用戶試圖再次評價,你會查詢它是否存在於這個新表中,如果在布爾型字段中值爲真,則顯示一條消息,告訴他他無法評分。如果你想使用IP地址,那就沒關係,但有時他會改變他的位置,他的網絡,他的電話和IP也會改變。你也應該考慮一下。而餅乾不是一個很好的解決方案。只需使用IP地址和附加表格 – droidnation

+0

爲了提高安全性,我建議使用PDO重新編寫腳本。 MySQLi已經足夠好了,但我更喜歡PDO。 – droidnation

+0

@AmirHD https://meta.stackexchange.com/a/5235/352329 – mickmackusa

相關問題