简洁的想法

仁爱、喜乐、和平、忍耐、恩慈、良善、信实、温柔、节制

Reload 的问题及其解决

| Comments

reload 的问题及其解决
我以前在写 PHP 程序时,经常碰到页面刷新时,数据库多处理一次的情况。
我们来看 addcust.php:

[codes=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);
?>[/codes]
[codes=html]
<html>
<head>
<title>Customer insert</title>
</head>
<body>
I've inserted the customer for you.
</body>
</html>
[/codes]
假设我们用下面的连接使用这个程序:

http://www.freelamp.com/addcust.php?surname=Smith&firstname=Fred

如果这个请求只提交一次,OK ,不会有问题,但是如果多次刷新,你就会有多条记录插入。
这个问题可以通过 header() 函数解决:下面是新版本的 addcust.php:

[codes=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");
?>[/codes]
这个脚本把浏览器重定向到一个新的页面:cust_receipt.php:

[codes=html]
<html>
<head>
<title>Customer insert</title>
</head>
<body>
I've inserted the customer for you.
</body>
</html>
[/codes]
这样,原来的页面继续刷新也没有副作用了。

来源:http://www.freelamp.com/1018587223/index_html

Comments