可以这样:
<?php
session_start();
if(isset($_POST["cmd"])) {
  if(! session_is_registered("submit")) {
    session_register("submit");
    $submit = 1;
    echo "提交成功!<br>";
  }else {
    echo "你已经提交过了!<br>";
  }
}
?>
<form action="" method=POST>
<input type=text name=txt>
<input type=submit name=cmd>
</form>

解决方案 »

  1.   

    SAMPLE:if (isset($_SESSION['submit'])) {
        die("对不起,你已经提交过了!");
    } else {
       ...
       $_SESSION['submit'] = 1;
    }这里写了一个很简单的例子……只是提供一个思路。
      

  2.   

    你问题没提清楚嘛我上面也说了,只是个思路问题~
    帖子都有个tid来标志吧?
    那就可以用这个来作为变量名呀,比如你发的帖子(tid为123),就$_SESSION['tid123']赋值~
      

  3.   

    方法好多拉,不一定要用纯SESSION来做的!加js的效果更好(提交后按钮变灰)具体代码找下“孟子”的关于这个问题的一帖吧
      

  4.   

    知道孟子那个帖子,没明白,所以才另问的。js不行,如果用户提交完毕以后刷新的话还是会重新提交的。
    帖子的id标记不妥。如果用户又写了一部分内容提交的呢?
      

  5.   

    又些部分?id值不同嘛~
    如果是修改就不用理会了……不过我也觉得这个方法不好。发个帖就多个SESSION,大大降低服务器性能!为什么不用过度页面?即提交到另一程序,再用META转回来
      

  6.   

    较好的方法是保存全部提交信息
    if(! isset($_SESSION["old"])
      $_SESSION["old"] = serialize($_POST);
    else
      if($_SESSION["old"] == serialize($_POST))
        die("你已提交");还见过有用检索重复记录的方法的
      

  7.   

    如 KEBB(化石) 所说,会降低效率。
    其实主要的是不接受用户刷新的时候重复提交的数据。其他的就没什么了。
    how?
      

  8.   

    用$_SESSION[]就不能用session_register()/session_unregister()/session_is_registered() functions