PHP China | 中国开源之路 's Archiver

wodoe 发表于 2008-11-19 20:32

网页重复提交的疑问

看下面的代码
,得到的POST传入值,好像刷新多少次也存在不会消失,有什么方法可以让他用一次就消失,这样就不会重复提交了.
提交是本页提交,地址提交之后一直是
http://127.0.0.1/guestboard/browse.php?firstmesid=84&action=M
这样的话,每刷新一次提交一次,[color=red]第一次提交还会出来网页提示[/color]
[php]
if($_GET['action']=='M'){
    $firstmesid=intval($_POST['firstmesid']); //获得隐藏传入值
    $lastmesid=intval($_POST['lastmesid']);
    $title=addslashes($_POST['title']);   //获得回复提交页传入值
    $content=addslashes($_POST['content']);
    //执行数据库写入
    $re_sql="insert into `guestbook`(`title`,`content`,`posttime`,`firstMesID`,`lastMesID`) values('$title','$content',now(),'$firstmesid','$lastmesid')";
    if($mysqlconn->query($re_sql))
    {
        //断开连接
        $mysqlconn->exited();
    }else{
        die("新回复写入失败!");
    }
}

[/php]

syb328 发表于 2008-11-19 20:42

php的头部加如下代码:

header('Expires: '.date('D,d M Y H:i:s',mktime(0,0,0,1,1,2000)).' GMT');
header('Last-Modified:'.gmdate('D,d M Y H:i:s').' GMT');
header('Cache-control: private, no-cache,must-revalidate');
header('Pragma: no-cache');

wodoe 发表于 2008-11-19 20:51

不起做用 一直有提示

又刷新提交好多

syb328 发表于 2008-11-19 21:10

你是不是想只接受一次接受同一来源的提交?
那你可以通过如下技术:
1.后台检查ip,看是否重复
2.客户端提交时,url后加时间戳
还有,你这问题,不是问题,任何普通的web 开发者都会遇到的

于安 发表于 2008-11-20 08:45

$firstmesid=intval($_POST['firstmesid']); //获得隐藏传入值
用来对比某个值,
  比如:

if($firstmesid == $cookiceid)  //成立就进入
{
     setcookie()  //将cookiceid的值改变掉, 下次刷新它就进入不了了,.
}

wodoe 发表于 2008-11-20 10:24

不重复提交好像可以这样解决,但是同页面
地址栏还是那个地址,刷新一直会有网页提示
我弄不好 分开来了,提交一个页,回复一个页,再把不让刷新加到回复那里

ivan820819 发表于 2008-11-20 11:52

可以单独做一个DB也来处理数据请求,处理完后跳转到你要看的页,这样就是GET方法,不管他怎么刷新都没用!

loveloop 发表于 2008-11-20 11:55

用js做一个简单的处理就可以了!

可以参考我做的提交的办法 ,目前是有效的防止了重复提交的问题

[url]http://www.juexiang.com/ForUserEditDiary.php[/url]

phpjevin 发表于 2008-11-20 12:20

可以用cookie或者网页头部header过期不过期处理啊
还看见过用session_id处理的

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.