gpt4 book ai didi

php - 验证用户只投票一次

转载 作者:行者123 更新时间:2023-11-30 18:28:13 24 4
gpt4 key购买 nike

我目前正在关注这个 tutorial创建一个简单的投票系统。

除了用户只能投票一次的验证部分外,它工作正常。本教程使用IP,不适用于动态IP用户

<?php
include("config.php");
$ip=$_SERVER['REMOTE_ADDR'];

if($_POST['id'])
{
$id=$_POST['id'];
$id = mysql_escape_String($id);
//Verify IP address in Voting_IP table
$ip_sql=mysql_query("select ip_add from Voting_IP where mes_id_fk='$id' and ip_add='$ip'");
$count=mysql_num_rows($ip_sql);

if($count==0)
{
// Update Vote.
$sql = "update Messages set up=up+1 where mes_id='$id'";
mysql_query( $sql);
// Insert IP address and Message Id in Voting_IP table.
$sql_in = "insert into Voting_IP (mes_id_fk,ip_add) values ('$id','$ip')";
mysql_query( $sql_in);
echo "<script>alert('Thanks for the vote');</script>";
}
else
{
echo "<script>alert('You have already voted');</script>";
}

$result=mysql_query("select up from Messages where mes_id='$id'");
$row=mysql_fetch_array($result);
$up_value=$row['up'];
echo $up_value;

}
?>

是否有更好的方法来确保用户只投票一次?

最佳答案

简化一下怎么样

<?php
//HERE include DB config and set variables
$result = mysql_query("SELECT * FROM votes WHERE id = '$id' AND ip = '$ip'");
$count = mysql_num_rows($result);
if($count > 0){
echo "<script>alert('You have already voted');</script>";
}
else{
//Update Sets
}
?>

但最终,您应该使用用户帐户或 cookie。虽然用户可以清除浏览器的 cookie,但用户也可能拥有一个动态 IP 地址。这也适用于使用单一 IP(免费 Wi-Fi 网络、学校、工作场所)的大型网络的用户

我认为创建用户帐户是最好的主意

<?php
$result = mysql_query("SELECT * FROM votes WHERE username = '$_SESSION[username]' AND id = '$id'");
?>

关于php - 验证用户只投票一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10292557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com