PHP投票,每天每IP一票:需要代码帮助
我在一个非常基本的网站上工作,它允许人们每24小时对每个IP地址的一个项目(游戏)进行一次投票。投票存储在名为Votes的表中,其中的列包含投票ID、游戏ID、votedate和IP地址 用户通过…vote.php?id=#(其中#是gid)进入该游戏的投票页面。下面是my current vote.php的简化版本,它不起作用:PHP投票,每天每IP一票:需要代码帮助,php,sql,ip-address,voting,vote,Php,Sql,Ip Address,Voting,Vote,我在一个非常基本的网站上工作,它允许人们每24小时对每个IP地址的一个项目(游戏)进行一次投票。投票存储在名为Votes的表中,其中的列包含投票ID、游戏ID、votedate和IP地址 用户通过…vote.php?id=#(其中#是gid)进入该游戏的投票页面。下面是my current vote.php的简化版本,它不起作用: <?php $gid = $_GET["id"]; $ip = $_SERVER['REMOTE_ADDR']; require_once ('config.p
<?php
$gid = $_GET["id"];
$ip = $_SERVER['REMOTE_ADDR'];
require_once ('config.php');
$q = "SELECT * FROM votes WHERE (gid=$gid)";
$r = @mysqli_query($dbc, $q);
if ($r) {
while ($row = mysqli_fetch_array($r)) {
if ($row['ip'] != $ip) { // If no IP exists, go ahead and vote.
$q2 = "INSERT INTO votes (gid, votedate, ip) VALUES ('$gid', NOW(), '$ip' )";
$r2 = @mysqli_query($dbc, $q2);
if ($r2) {
echo 'Thank you for voting';
} else {
echo 'There was a problem with your vote'
}
} elseif ($ip == $row['ip']) {
// If IP address exists, check date of last time they voted for this game
// Define the two dates
$votedate = $row['votedate'];
$now = date("Y-m-d H:i:s");
// Calculate hours between the dates
$diff = round((strtotime($now) - strtotime($votedate)) / (60 * 60));
// Create variable for when user can return.
$return = '24' - $diff;
if ($diff > '24') { // Allow to vote once every 24 hours
$q3 = "INSERT INTO votes (gid, votedate, ip) VALUES ('$gid', NOW(), '$ip' )";
$r3 = @mysqli_query($dbc, $q3);
// Display outcome of insert query:
if ($r3) {
echo 'Thank you for voting, please come back in 24 hours to vote again!';
} else {
echo 'There was a problem with your vote:' . mysqli_error($dbc) . ' in reference to query ' . $q3;
}
} else {
echo 'Sorry, you\'ve already voted in past 24 hours, please come back again in ' . $return . ' hours.';
}
}
} // End of while $r loop
} else {
echo 'Sorry, your query did not work.';
} // End of overall if $r ran
mysqli_close($dbc);
exit();
?>
对于使用相同类型的数学运算,请小心: 尝试使用floatval() 什么东西不能“工作”呢?
$diff = floatval(round((strtotime($now) - strtotime($votedate)) / (60 * 60)));
$return = 24.0 - $diff;
if ($diff > 24.0)
{
/* Your code */
}