一个最简单类似留言板,刷新又添加了一条记录怎么办? 你刷新了,能不向数据库内再insert一条记录吗?你insert成功后,你跳转到其他页面就行了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我用跳转header("location:***.htm")结果出现错误! 检测数据源是不是你的提交页面,如果确实是的话,再入库,否则就做其他处理不就行了?用这个变量来判断怎么样?if (isset($_ENV["HTTP_REFERER"])&&($_ENV["HTTP_REFERER"]=="page1.php")){ echo "<p>数据来自<a href=".$_ENV["HTTP_REFERER"].">"; echo $_ENV["HTTP_REFERER"]; echo "</a>"; ...加入数据库的操作代码...}else{ echo "<script language=javascript>\n"; echo "alert(\"请到这个页面提交数据\");\n"; echo "location=\"page1.php\";\n"; echo "</script>";}; 出現什麽錯誤呀?是不是你前面有輸出呀,比如echo,printf等或者空行等 sandj我照你的方法做了,结果所有的输入都变成不合法的了,我也不知道怎么回事! 提交页面中,生成一个随机session, 把这个值赋给一个变量例如$check提交的时候,把这个变量$check也一起提交执行插入的页面,先检验输入的$check和session中的那个变量是否匹配,如匹配,先把session值变掉,再向数据库里添加。如不匹配,就不管了。 提交成功之后重定向一下就可以了没必要搞得这么复杂的。重定向失败,说明你的header语句之前有输出 看看VBB原码,他的做法是截取一段时间,如果在此时间内发现用户提交的数据和数据库的一致,则不会进行数据库插入操作。。以下是一个小小的例子:我以前在写 PHP 程序时,经常碰到页面刷新时,数据库多处理一次的情况。我们来看 addcust.php:<?php$query = "INSERT INTO customerSET surname = $surname,firstname = $firstname";$connection = mysql_connect("localhost", "fred", "shhh");mysql_select_db("winestore", $connection);$result = mysql_query($query, $connection);?><!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd" ><html><head><title>Customer insert</title></head><body>I've inserted the customer for you.</body></html>?>假设我们用下面的连接使用这个程序:http://www.freelamp.com/addcust.php?surname=Smith&firstname=Fred如果这个请求只提交一次,OK ,不会有问题,但是如果多次刷新,你就会有多条记录插入。这个问题可以通过 header() 函数解决:下面是新版本的 addcust.php:<?php$query = "INSERT INTO customerSET surname = $surname,firstname = $firstname";$connection = mysql_connect("localhost", "fred", "shhh");mysql_select_db("winestore", $connection);$result = mysql_query($query, $connection);header("Location: cust_receipt.php");?>这个脚本把浏览器重定向到一个新的页面:cust_receipt.php:<!DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.0 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd" ><html><head><title>Customer insert</title></head><body>I've inserted the customer for you.</body></html>这样,原来的页面继续刷新也没有副作用了。 我用跳转header("location:***.htm")结果出现错误! ~~~~~~是什么错误?不能说一下吗? 所有的数据都不合法?怎么会啊?是怎么做的?一个PAGE1的页面包含一个FORM提交到PAGE2的页面,上面的代码是PAGE2的内容哦,对了,在开始那个判断的句子里面应该是包含HTTP://的全路径啊!,你先用正确的看看对比下了!有一个系统所自动提取的变量啊,我测试除INDEX.PHP这样的可能会没有取出文件名外其他都是正常的 你可以这样呀,你提交上来以后在一个中转页面a.php中执行insert操作,完毕后马上就跳转到显示结果的页面不就行了 用header吗?结果我用header("location:***.php");提示好象是什么have send by.... 解决方法:1:在插入表单中增加:<?$myurl=getenv("HTTP_REFERER");//插入与显示不同页//$myurl=$REDIRECT_URL; //插入与显示同页?><input type=hidden name=myurl value=<?echo $myurl?>>2:处理页面echo "<br><center><a href=$myurl>插入成功</a></center><br>";echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=$myurl'>";echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=javascript:location.reload()'>";exit;呵呵试试效果, 补充说明://重定向到原来的显示页面echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=$myurl'>";//刷新显示页面echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=javascript:location.reload()'>";//这里才结束处理页面的运行exit; 对不起 wsrboy(wsrboy)我没有看懂,你能不能说的详细一些?我的send.php中是:左边是新闻标题,右边是delete.如果点击新闻标题则表示修改,点击delete 删除。delete.php中是处理delete的,我想delete处理完后,我用了个 echo "location=\"send.php\";\n";定位到send.php;结果我已经删除的那条记录还在,需要手动刷新才能去掉,请问我应该怎么做? 看了一下,好象是由于你向页面中输出了什么东西了。在header之前不能有任何信息输出,哪怕是一个空格!!! 我的send.php中是:左边是新闻标题,右边是delete.如果点击新闻标题则表示修改,点击delete 删除。delete.php中是处理delete的,我想delete处理完后,我用了个 echo "location=\"send.php\";\n";定位到send.php;结果我已经删除的那条记录还在,需要手动刷新才能去掉,请问我应该怎么做? 说明你没有刷新呀,我没用过你的语句,你让它自动刷新一次不就OK了吗echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=javascript:location.reload()'>"; 关于phpnow的php.ini问题 脚本的优化(百万级数据 求指教) smarty在模板中怎样用其中的一个变量组合成一个新的变量 表单验证问题,求解答 PHP Report Maker php怎么读取excel文件或者怎么把excel文件导入到mysql 哪位兄弟有富余空间?支持PHP+MySQL+Zend的,绑定域名,不需太大,20~50M即可,可付RMB 关于用GET提交表单的问题 call_user_func有什么用 PHP中高效率循环 两个$-----$$file的解释是什么??(高手指点) 求救!急急急急急急急急急急急急急急急急急急急急!
结果出现错误!
用这个变量来判断怎么样?if (isset($_ENV["HTTP_REFERER"])&&($_ENV["HTTP_REFERER"]=="page1.php")){
echo "<p>数据来自<a href=".$_ENV["HTTP_REFERER"].">";
echo $_ENV["HTTP_REFERER"];
echo "</a>";
...加入数据库的操作代码...
}else{
echo "<script language=javascript>\n";
echo "alert(\"请到这个页面提交数据\");\n";
echo "location=\"page1.php\";\n";
echo "</script>";
};
是不是你前面有輸出呀,比如echo,printf等或者空行等
提交的时候,把这个变量$check也一起提交执行插入的页面,先检验输入的$check和session中的那个变量是否匹配,
如匹配,先把session值变掉,再向数据库里添加。
如不匹配,就不管了。
没必要搞得这么复杂的。重定向失败,说明你的header语句之前有输出
我们来看 addcust.php:<?php
$query = "INSERT INTO customer
SET surname = $surname,
firstname = $firstname";
$connection = mysql_connect("localhost", "fred", "shhh");
mysql_select_db("winestore", $connection);
$result = mysql_query($query, $connection);
?>
<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<title>Customer insert</title>
</head>
<body>
I've inserted the customer for you.
</body>
</html>
?>
假设我们用下面的连接使用这个程序:http://www.freelamp.com/addcust.php?surname=Smith&firstname=Fred如果这个请求只提交一次,OK ,不会有问题,但是如果多次刷新,你就会有多条记录插入。
这个问题可以通过 header() 函数解决:下面是新版本的 addcust.php:<?php
$query = "INSERT INTO customer
SET surname = $surname,
firstname = $firstname";
$connection = mysql_connect("localhost", "fred", "shhh");
mysql_select_db("winestore", $connection);
$result = mysql_query($query, $connection);
header("Location: cust_receipt.php");
?>
这个脚本把浏览器重定向到一个新的页面:cust_receipt.php:<!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd" >
<html>
<head>
<title>Customer insert</title>
</head>
<body>
I've inserted the customer for you.
</body>
</html>
这样,原来的页面继续刷新也没有副作用了。
结果出现错误!
~~~~~~是什么错误?不能说一下吗?
是怎么做的?
一个PAGE1的页面包含一个FORM
提交到PAGE2的页面,上面的代码是PAGE2的内容
哦,对了,在开始那个判断的句子里面应该是包含HTTP://
的全路径啊!,你先用正确的看看对比下了!
有一个系统所自动提取的变量啊,
我测试除INDEX.PHP这样的可能会没有取出文件名外其他都是正常的
结果我用header("location:***.php");
提示好象是什么have send by....
1:在插入表单中增加:
<?
$myurl=getenv("HTTP_REFERER");//插入与显示不同页
//$myurl=$REDIRECT_URL; //插入与显示同页
?>
<input type=hidden name=myurl value=<?echo $myurl?>>
2:处理页面
echo "<br><center><a href=$myurl>插入成功</a></center><br>";
echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=$myurl'>";
echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=javascript:location.reload()'>";
exit;
呵呵试试效果,
//重定向到原来的显示页面
echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=$myurl'>";
//刷新显示页面
echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=javascript:location.reload()'>";
//这里才结束处理页面的运行
exit;
我的send.php中是:
左边是新闻标题,右边是delete.如果点击新闻标题则表示修改,点击delete 删除。
delete.php
中是处理delete的,我想delete处理完后,我用了个
echo "location=\"send.php\";\n";定位到send.php;结果我已经删除的那条记录还在,需要手动刷新才能去掉,请问我应该怎么做?
在header之前不能有任何信息输出,哪怕是一个空格!!!
左边是新闻标题,右边是delete.如果点击新闻标题则表示修改,点击delete 删除。
delete.php
中是处理delete的,我想delete处理完后,我用了个
echo "location=\"send.php\";\n";定位到send.php;结果我已经删除的那条记录还在,需要手动刷新才能去掉,请问我应该怎么做?
你让它自动刷新一次不就OK了吗
echo "<META HTTP-EQUIV=REFRESH CONTENT='0;URL=javascript:location.reload()'>";