作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在开发一个有 2 个链接的网站。赞成票和反对票。投票存储在 mysql 中名为“data”的表中,其中包含“yes”和“no”列
我已成功创建一个查询来更新"is"或“否”的计数,然后将值回显到页面。然而,目前用户可以垃圾点击按钮,并且计数将持续增加。
我已开始使用 $ip = $_SERVER['REMOTE_ADDR']; 记录 IP 地址;并将它们放入名为“ips”的表中,其中包含“ipaddresses”列。
现在,我想更改我的代码,以便它将查询 mysql 并检查“ips”表中的 $ip,如果返回 true,则 die(); else if... 执行点赞查询。这将使一个人每个 IP 只能投票一次。
这是我当前的代码:
<?php
if ($_GET['vote']=="yes") {
// Connection to database
$connection=mysqli_connect("hostname-here","username-here","password-here","database-here");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_query($connection,"UPDATE data SET yes = (yes + 1) WHERE ID = $_GET[id];");
mysqli_close($connection);
echo "Voted.";
}
?>
帮助将不胜感激,我已经用谷歌搜索了很多,但找不到任何有用的东西。谢谢!
最佳答案
如果有人已经投票,您不应该使用 IP 作为决定因素。多个用户可以来自同一个 IP。
如果您想这样做,您应该创建一个新表。我们称之为“user_action”。该表应该有一个名为 IP 的列,另一个名为 VOTE 的列。您必须记录每个单独的用户操作,并在更新“数据”表之前检查 IP。
编辑:一些伪代码可以为您提供更多帮助。
创建您的表:
CREATE TABLE user_action (IP varchar(39), VOTE tinyint(1));
简单的 PHP 逻辑。只需填写实际的 MySQL 命令(您显然已经知道如何从您的 OP 中执行此操作)
$sSql = "SELECT vote FROM user_action WHERE IP = '" . $_SERVER['REMOTE_ADDR'] ."'";
If (rowcount > 1) {
//User already voted, update their answer.
$sSql = "UPDATE user_action SET vote = " .$_GET['vote']. " WHERE IP = '" . $_SERVER['REMOTE_ADDR'] ."'";
}
Else {
//User hasn't voted, insert their answer
$sSql = "INSERT INTO user_action (vote, ip) VALUES(" .$_GET['vote']. ", '" . $_SERVER['REMOTE_ADDR'] ."'";
}
如果您想知道您有多少票:
$sSql = "SELECT sum(vote) FROM user_action WHERE vote = 1";
关于PHP Mysql IF 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34599172/
我是一名优秀的程序员,十分优秀!