当提交数据到test.php时,如果test.php处理数据后,header("abc.php");(或者header("test.php"))如果用户在提交数据后按F5,那么页面在跳转到abc.php(或者新的test.php)之前,会不会重复提交数据?谢谢
解决方案 »
- PHP生成HTML
- 页面调用问题,急
- 通过php向access表中加入文字后,表中为何显示为北环路营业厅
- 怎么样实现窗口关闭后还运行程序.在线等..
- 文章内容无html标记。用php怎么给它加上p标记
- php中replace(),ereg(),ereg_replace(),eregi(),eregi_replace(),str_replace(),preg_match()的用法问题?
- 问几个问题,今天一定要搞懂,开发过网站的人都懂,给200分!!!
- NT中的PHP问题
- 为什么我的ie里的php文件不解析呢?下面是我的httpd.conf文件的部分内容,我用的是2000+apache2.0+mysql+php4.0。谢谢回答~~
- 关于php模拟登陆
- 关于用mail()发邮件的问题
- 请问怎么在header跳转之前,刷新父窗口?
if ($_POST["TiJiao"]=="提交")
{
print_r($_POST);
echo "<script>alert('1')</script>";
$str="";
for ($i=0; $i<100; $i++)
{
$str.="mm";
echo $str;
}
header("location: 1.php");
}
?>
<form action="" id="myForm" method="post">
<input type="text" id="A" name="A" value="A">
<input type="text" id="B" name="B" value="B">
<input type="submit" name="TiJiao" value="提交">
</form>使用上面这段代码,有两个问题不理解
1.为什么在ie8上,按提交时,会弹出两次alert('1'),在firefox下只有一次
2.为什么在ie8和firefox上,header("location: 1.php");没有起作用,都没有跳转到1.php页面上去?
改为button后,ie8就只弹出一次alert
<?php
if ($_POST["A"]=="A")
{
print_r($_POST);
$str="";
for ($i=0; $i<100; $i++)
{
$str.="mm";
//echo $str;
}
echo $str;
header("location:abc.php");
}
?>
<form action="" id="myForm" method="post">
<input type="text" id="A" name="A" value="A">
<input type="text" id="B" name="B" value="B">
<input type="button" name="TiJiao" value="提交" onclick="document.getElementById('myForm').submit()">
</form>
这段就没有问题,能跳转到abc.php
经过一系列数据检测(及用户名是否合法,密码正确等),成功插入数据库后,清除这个session。当用户刷新时,又会遇到这个检测session是否存在的问题,而用户没有,因为已经被清空,则else header(“location:错误页面”)。
<?php
//sleep(5);
if ($_POST["A"]=="A")
{
print_r($_POST);
echo "<script>alert('abc');</script>";
$str=0;
for ($i=0; $i<1000000; $i++)
{
for ($j=1; $j<10; $j++)
$str.="mm";
//echo $str;
}
//header("location:abc.php");
}
?>
<form action="" id="myForm" method="post">
<input type="text" id="A" name="A" value="A">
<input type="text" id="B" name="B" value="B">
<input type="button" name="TiJiao" value="提交" onclick="document.getElementById('myForm').submit()">
</form>根据结果,我觉得,当提交数据到服务器,并且服务器返回处理数据后的页面(并且没有header跳转),按F5刷新才会重复提交数据。
如果服务器处理数据要很长时间,处理完数据前,用户按F5,这时就会重复获取test.php(GET test.php),而没有提交数据。
如果服务器处理数据后,把新的页面发送到客户端,没有使用header跳转,那么用户按F5,就会重复提交数据。
如果服务器使用header跳转到新的页面了,客户端的页面跳转到新的页面了,那么如果客户再按F5,就只能获取新的页面(GET abc.php)。
不知道在客户端,显示服务处理数据后的页面和跳转到新的页面之间,是不是有一段时间,如果有的话, 用户按F5,会不会重复提交数据。如果在客户端,没有中间一段时间的话,就不会重复提交数据了。
现在就是不知道,应该如何测试 服务处理数据后的页面和跳转到新的页面之间,是不是有一段时间,能不能在这段时间中间按F5重复提交数据。
哪位老大分析一下我说的对不对?
你说的这种情况,当用户第一次提交数据后,马上又按F5刷新,是不是会重复提交?
假设服务器处理数据后,还是返回原来的页面。如果用户按了提交后,发现数据不对,就在当前的页面上再修改,然后再提交,就会发现不能提交修改的数据了。
2. 在跳转页写echo $_GET['msg'];
....
....
</form>
<iframe id="phpiframe" name="phpiframe" width="0" height="0" marginwidth="0" frameborder="0" src="about:blank"></iframe>
不知道还在不在,
你这种方法的原理是什么?不太明白
保证3秒钟之类只允许请求一次就好了。
也就是说在当前页面包含一个空白的iframe,然后提交内容处理的时候,用target把处理过程放到iframe中执行,然后处理部分你只接受post方法传递来的变量,这样他单独刷新处理页面的时候变量值是获取不到的,那么自然就停止处理了,这样就达到他不能自行刷新的效果了。他如果直接刷新当前页面的话,那么所有的数据全部重载,一样是无效的。我只是提一个思路,而且我也用过这种方式,但具体这种方式好不好还得等高手来指教呢
个人最喜欢header,因为最简单,而且很多开源代码都是用的header,都没什么大问题啦
窗口B想要在header跳转到C之前,刷新一下窗口A,或者跳转之后刷新,但是不能在C页面上写代码刷新A
本来想使用echo "<script>
if (opener && typeof(window.opener.document)!='unknown' && typeof(window.opener.document)!='undefined')
{
opener.location.href=opener.location.pathname+opener.location.search;
}
</script>";
header("location:");
但是header前面的echo通常不起作用,
请问这时候应该怎么做?谢谢