Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 防止多个SQL插入_Php_Sql_Insert - Fatal编程技术网

Php 防止多个SQL插入

Php 防止多个SQL插入,php,sql,insert,Php,Sql,Insert,我目前有一个JavaScript,如果页面刷新或用户提交后按下浏览器后退按钮,它会重置表单,但如果一个极度无聊的用户无视JavaScript,反复填写并提交表单,我的DB将被垃圾邮件 我想防止这种情况发生(可能是通过检查同一用户在一分钟左右的时间内是否插入了超过10行),但我不知道如何防止这种情况发生。通常这是通过会话id/令牌完成的 通过这种方式,您可以检查其是否已提交,并且只允许提交一次 这里有一个类似的问题: 在会话变量中保存帖子数量 每次用户提交内容时,您都可以执行以下操作: $_SES

我目前有一个JavaScript,如果页面刷新或用户提交后按下浏览器后退按钮,它会重置表单,但如果一个极度无聊的用户无视JavaScript,反复填写并提交表单,我的DB将被垃圾邮件


我想防止这种情况发生(可能是通过检查同一用户在一分钟左右的时间内是否插入了超过10行),但我不知道如何防止这种情况发生。

通常这是通过会话id/令牌完成的

通过这种方式,您可以检查其是否已提交,并且只允许提交一次

这里有一个类似的问题:


在会话变量中保存帖子数量

每次用户提交内容时,您都可以执行以下操作:

$_SESSION['postCount'] = $_SESSION['postCount'] + 1;
然后你把整个事情变成这样:

if($_SESSION['postCount'] > 2) {
  // Your code that posts to the database
  $_SESSION['postCount'] = $_SESSION['postCount'] + 1;
}

如果尚未使用会话,请确保使用会话_start()启动每个脚本;使用此代码,任何人都不能发布超过三次的内容。

我会在表中添加一列,记录上次表单提交的时间戳。然后,当页面加载时,将其声明为javascript的全局变量

<?php include 'connect.php';

$sql = mysqli_fetch_assoc(mysqli_query($cxn, "SELECT lastFormSubmission FROM myTable WHERE login_id = '".mysqli_real_escape_string($cxn, $_SESSION['login_id'])."'"));

$lastFormTime = $sql['lastFormSubmission'];

?>

这仍然不能解决恶意用户重播提交数据的问题。我想我只是没有正确理解OP的问题…威尔edit@ChemistryBlob-只需确保您永远不会将任何安全性留给客户端(即JavaScript),因为它总是会被篡改。任何关键的安全机制都应该在服务器级别(即PHP)而不是客户端级别实现。在这种情况下,它可能意味着某种形式的递增会话变量。这非常好而且简单,对我来说非常适合。非常感谢。
<script type="text/javascript">
    var lastTime = '<?= $lastFormTime ?>';
</script>
//Your script
var t = new Date().getTime() / 1000; //Need time in seconds to compare with timestamp


if (t - lastTime < yourThresholdTime) {
    //don't submit form
}