php
  • html
  • 2011-04-17 67 views 0 likes 
    0

    我有这样的代码:为什么会提交此行为?

    <? 
        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> 
    

    如果我迅速按下发送(无需等待响应,只是很快)我看到该消息被插入只有1次上的数据库。

    但是,如果我添加(例如)功能sleep(2);在PHP脚本,我还是赶紧点击发送,它在数据库中增加了为每次点击的字符串。

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

    +1

    只需建议几句话,请使用''而不是''。 :) – Shaz 2011-04-17 01:19:26

    回答

    1

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

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

    +0

    这就是为什么我想到一个用户,当一个页面没有呈现(可能是一个缓慢的连接)时点击(例如)2-3次按钮:在这种情况下,他发送2-3请求到服务器? – markzzz 2011-04-17 01:21:18

    +2

    通常情况下,如果响应速度较慢,如果用户再次单击,则会发送另一个http请求(并且第一个响应会丢失)。这是一个讨厌和众所周知的问题,寻找“双提交”。例如http://stackoverflow.com/questions/2635652/how-can-i-prevent-a-double-submit-with-jquery-or-javascript或http://stackoverflow.com/questions/442678/preventing-双HTTP-POST – leonbloy 2011-04-17 01:25:48

    相关问题