Php 仅通过按链接更新数据库
我有一些图像的代码,比如:Php 仅通过按链接更新数据库,php,html,prepared-statement,Php,Html,Prepared Statement,我有一些图像的代码,比如: <img src="../images/woods/oak.png" onclick="loadXMLDoc(this), add_items_oak(this), add_skills_oak(this)" class="a" name="oak"/> <img src="../images/woods/oak.png" onclick="loadXMLDoc(this), add_items_oak(this), add_skills_oak(t
<img src="../images/woods/oak.png" onclick="loadXMLDoc(this), add_items_oak(this), add_skills_oak(this)" class="a" name="oak"/>
<img src="../images/woods/oak.png" onclick="loadXMLDoc(this), add_items_oak(this), add_skills_oak(this)" class="b" name="oak" />
然后使用以下文件更新数据库:
<?php
require('../includes/db_connect.php');
/* Register a prepared statement */
if ($stmt = $mysqli->prepare('
UPDATE items_woods t1 JOIN skills_woodcutting t2
ON t1.id = t2.id
SET t1.oak = oak+1,
t2.exp = exp+13
WHERE t1.id = ?;
')) {
/* Bind parametres */
$stmt->bind_param('i', $id);
/* Insert the parameter values */
$id = 1;
/* Execute the query */
$stmt->execute();
/* Close statement */
$stmt->close();
} else {
/* Something went wrong */
echo 'Something went terrible wrong' . $mysqli->error;
}
?>
现在的问题是,人们可以使用url来模拟单击其中一幅图像。比如写:www.examplepage.com/database/update.php
我需要update.php
检查是否单击了图像
我尝试了一些代码,在
标记中设置了一个值为true,只有在update.php
中设置为true,它才会执行代码。这没有帮助,因为我正试图找到一个解决办法,不能欺骗,我想问这里。有什么建议或建议吗?提前感谢。任何标准方法都无法满足您的需求。与直接访问URL相比,没有办法要求某人单击链接
您必须做一些事情,比如生成一个只在短时间内有效的一次性散列,并且只允许脚本在链接中传递时有效
因此,如果用户使用该散列单击一个链接,它将工作一次,但以后使用该散列单击将不会工作。他们必须再次找到图像,然后用新的散列再次单击它以触发相同的函数
编辑:
如果你在做一个看起来像这样的浏览器游戏,让用户看到资源并点击索取,你能先生成一张地图,发送他们点击的x/y坐标,然后跟踪资源被删除了吗
然后,如果他们试图再次“切割”相同的x/y坐标,那么它将不起作用,因为他们已经收获了它。通过任何标准方法都不可能实现您想要的。与直接访问URL相比,没有办法要求某人单击链接 您必须做一些事情,比如生成一个只在短时间内有效的一次性散列,并且只允许脚本在链接中传递时有效 因此,如果用户使用该散列单击一个链接,它将工作一次,但以后使用该散列单击将不会工作。他们必须再次找到图像,然后用新的散列再次单击它以触发相同的函数 编辑: 如果你在做一个看起来像这样的浏览器游戏,让用户看到资源并点击索取,你能先生成一张地图,发送他们点击的x/y坐标,然后跟踪资源被删除了吗
然后,如果他们试图再次“切割”相同的x/y坐标,那么它将不起作用,因为他们已经收获了它。通过任何标准方法都不可能实现您想要的。与直接访问URL相比,没有办法要求某人单击链接 您必须做一些事情,比如生成一个只在短时间内有效的一次性散列,并且只允许脚本在链接中传递时有效 因此,如果用户使用该散列单击一个链接,它将工作一次,但以后使用该散列单击将不会工作。他们必须再次找到图像,然后用新的散列再次单击它以触发相同的函数 编辑: 如果你在做一个看起来像这样的浏览器游戏,让用户看到资源并点击索取,你能先生成一张地图,发送他们点击的x/y坐标,然后跟踪资源被删除了吗
然后,如果他们试图再次“切割”相同的x/y坐标,那么它将不起作用,因为他们已经收获了它。通过任何标准方法都不可能实现您想要的。与直接访问URL相比,没有办法要求某人单击链接 您必须做一些事情,比如生成一个只在短时间内有效的一次性散列,并且只允许脚本在链接中传递时有效 因此,如果用户使用该散列单击一个链接,它将工作一次,但以后使用该散列单击将不会工作。他们必须再次找到图像,然后用新的散列再次单击它以触发相同的函数 编辑: 如果你在做一个看起来像这样的浏览器游戏,让用户看到资源并点击索取,你能先生成一张地图,发送他们点击的x/y坐标,然后跟踪资源被删除了吗
然后,如果他们再次尝试“切割”相同的x/y坐标,则不会工作,因为他们已经获取了它。您可以测试POST请求
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// … your database code
}
如果用户只是访问了URL,这至少会停止更新,因为这将构成GET请求,您可以测试POST请求
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// … your database code
}
如果用户只是访问了URL,这至少会停止更新,因为这将构成GET请求,您可以测试POST请求
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// … your database code
}
如果用户只是访问了URL,这至少会停止更新,因为这将构成GET请求,您可以测试POST请求
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// … your database code
}
如果用户只是访问URL,这至少会停止更新,因为这将构成GET请求哦,聪明,我会将这些哈希存储在数据库中吗?检查我的更新;我没有注意到它以前是什么样子,所以我添加了一个替代想法:)我喜欢这两个想法,但我认为第二个想法对我来说有点太复杂了,我宁愿创建哈希并检查它是否是“合法”点击。这听起来不错,在这种情况下,每当你添加一个新的树来显示用户时,我都会生成哈希;将其保存在db中的某个位置,如果他们单击,您可以将其标记为剪切,或者只删除哈希条目(如果您选择删除,那么请确保在删除之前单击时验证哈希是否在db中;不要只发出盲删除),您还可以在哈希上添加时间戳,并删除早于一天的哈希表,处理看到它们但从不点击它们的人。哦,聪明,我会将这些哈希存储在数据库中吗?检查我的更新;我