有什么办法,可以让a页面POST它自己,然后再刷新的时候不再提示是否重复提交表单?

xmlscript 2011-04-06 01:16:21
页面很简单:
<form action="" method="post">
<input type="submit"/>
</form>
action为空,就是他自己。

1、第一次打开这个页面时,是get请求;
2、当我点击了submit,就post请求他自己;
3、这个文件返回了结果,当然,显示的还是他自己;
4、此刻,我再点刷新,提示是否重复提交表单?难道他不认为这次的刷新还是应该以get请求吗?

如何让它在post以后,点击刷新,然他仍然以get方式请求他自己?

【注】:action必须提交到他自己,而不能是另一个文件。
...全文
808 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xmlscript 2011-04-09
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 helloyou0 的回复:]

form提交后,
如果验证成功,就header到某页面(可以是同一个php文件但是显示成功信息),
如果不成功,继续显示原form和错误信息

这个是很多现有php软件的做法
[/Quote]
就是这个意思!order.php就是order.php,我自称其为“多态”,可能临时仅显示一次成功消息,可能显示错误并重新填写表单页面,也可能显示用户当前的order信息。但是内容模板,已经单独分离出来了,这样完全符合逻辑,数据,呈现分离,非常好,而且非常健壮。
xmlscript 2011-04-09
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

我的老天爷啊……这个问题如果不是纯粹的钻牛角尖的话,需要这么做吗?

你的action不可以是另外一个doSomething.php吗?然后在doSomething里处理完后再redirect回来吗?你把前台和后台混在一起有什么好处啊?
[/Quote]
当然是很有好处的,不是钻牛角尖。至于有什么好处,是另外一个问题的范畴了,呵呵。
TR@SOE 2011-04-07
  • 打赏
  • 举报
回复
我的老天爷啊……这个问题如果不是纯粹的钻牛角尖的话,需要这么做吗?

你的action不可以是另外一个doSomething.php吗?然后在doSomething里处理完后再redirect回来吗?你把前台和后台混在一起有什么好处啊?
helloyou0 2011-04-07
  • 打赏
  • 举报
回复
form提交后,
如果验证成功,就header到某页面(可以是同一个php文件但是显示成功信息),
如果不成功,继续显示原form和错误信息

这个是很多现有php软件的做法



y75674952 2011-04-06
  • 打赏
  • 举报
回复
页面POST执行完成以后. 在PHP使用JS重新访问本页面.history.go(-1) 或者location.href
可以做到你想到的结果
xmlscript 2011-04-06
  • 打赏
  • 举报
回复
<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
header("location: /test/post2get.php");
}
?>
<form action="" method="post">
<input type="submit"/>
</form>

补充一点,为了配合SEO,最好给每次跳转找一个合适的理由,但最好不要是302跳转
到底用什么返回代码,需要研究研究。

200就挺好,那么有其他更合适的吗?
ImN1 2011-04-06
  • 打赏
  • 举报
回复
啊?提交后自动header?我还以为你要先显示一些内容
xmlscript 2011-04-06
  • 打赏
  • 举报
回复
找到解决问题的最佳方法了

首先断掉长连接行不通:
我设置了<?php header('connection: close')?>,并监测到的确没有保持长连接了,但是刷新后仍然提示重复提交表单。

我恍然大悟到,改页面的request= "POST ****.php HTTP/1.1",这个是不会变的,看来修改长连接的方式行不通。
为能想到唯一可能的方式就是header跳转到他自己了。

header('location: 他自己的文件名'); //成功!!!!!!!!!!!!!!!!!!!!
Oh Yeah!!!!!
xmlscript 2011-04-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 whg4585 的回复:]

设定提交标识,可以用COOKIE来实现.
写个函数控制FORM的提交:
<form action="" method="post"
onsubmit="form_submit(<?php echo isset($_COOKIE['cookie'])?$_COOKIE['cookie']?'' ;?>)">
// 这个COOKIE在第一次POST过后生成.
....
<scrip……
[/Quote]
你好,应该不是客户端脚本能办到的事情。
xmlscript 2011-04-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 snmr_com 的回复:]

post后刷新都会询问是否再post
post能改成get么?
[/Quote]
你好,热心肠儿,又是你,呵呵。

我正在寻找使用php的header函数来控制将http1.1协议的长连接keep-alive断掉的方法,呵呵。
小在在 2011-04-06
  • 打赏
  • 举报
回复
设定提交标识,可以用COOKIE来实现.
写个函数控制FORM的提交:
<form action="" method="post"
onsubmit="form_submit(<?php echo isset($_COOKIE['cookie'])?$_COOKIE['cookie']?'' ;?>)">
// 这个COOKIE在第一次POST过后生成.
....
<script>
function form_submit(cookie)
{
return cookie==''?true:false;
// 不存在COOKIE提交,否则不提交..
}
</script>
看看这个思路行不行..
ImN1 2011-04-06
  • 打赏
  • 举报
回复
post后刷新都会询问是否再post
post能改成get么?
xmlscript 2011-04-06
  • 打赏
  • 举报
回复
我观察到我这个页面的http信息是:
connection = keep-alive
我要如何用php代码只为这个页面断掉这个长连接?但是不能修改服务器的全局设置。

这是个猜想,首先我暂时不懂如何断掉长连接,其次,我担心就算断掉了长连接,之前的session是否还有效?我仍然希望记住这个访客连接。

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧