为什么提交此行为?

时间:2011-04-17 01:09:39

标签: php html

我有这段代码:

<?
    if(isset($_POST['wallib']) {
            $insert=mysql_query("INSERT INTO wall (message) VALUES ('".mysql_real_escape_string($_POST['wallib'])."')",$mydb);
    }
?>

<form action='index.php?explore=home' method='post' name='wallHome'>
    <input id="wallib" name="wallib" type="text" class="inputWall1" />
    <a href="javascript:document.wallHome.submit();">Send</a>
</form>

如果我快速按下发送(无需等待响应,只需快速),我看到该消息仅在数据库上插入一次。

但是,如果我在php脚本中添加(例如)函数sleep(2);,我仍然快速点击发送,它会在数据库中为每次点击添加字符串。< / p>

所以我在第一种情况下不是那么快?是的,一个愚蠢的问题......只是好奇...... :)

1 个答案:

答案 0 :(得分:1)

很难说。这可能是一些竞争条件,并且可能取决于浏览器行为。可能是例如第二次点击(在浏览器内)关于它正在接收/处理响应并准备渲染输出的同时,并且在那时它使任何用户输入无效。

根据您使用的浏览器,您可以使用开发工具和插件来调试所有浏览器 - 服务器对话。查看Web服务器日志,检查两次点击触发的请求数量也很有用。