我已经PHP编码了很长时间,从未见过这样的事情。我最近更改了Web主机,并且当它们应该只运行一次时,我已经开始看到我的一些脚本运行了两三次。但是,只有在存在标题(位置)类型的重定向时才会发生这种情况。
如果我注释掉重定向,脚本将按原样运行一次,但如果我离开重定向,它将在重定向之前运行两到三次。
我怎么知道这是脚本将信息插入到SQL数据库中,并且会插入两到三个重复的信息。
我在www.realitychurchweb.net/test1.php
创建了一个简单的测试该页面的脚本是:
require_once("handlers/connection.php");
mysql_query("INSERT INTO AA_GENERIC (name, value)VALUES('testing', '123')");
header("Location: test2.php");
test2.php的脚本是:
require_once("handlers/connection.php");
$q = mysql_query("SELECT * FROM AA_GENERIC WHERE name = 'testing'");
$num = mysql_num_rows($q);
echo "There are now $num rows<br /><br />";
如果我输入浏览器的URL(Safari),它将在重定向到test2之前输入1,2或3行,然后显示现在有多少行。
我采访了网络主机的技术支持,他们没有任何帮助。我真的很茫然。
答案 0 :(得分:1)
在脚本test1.php中调用exit;
之后,您是否已经尝试header()
了?
代码执行多次是不可能的,所以要么多次调用脚本(例如bots,cronjob等),要么执行一些其他代码(可能在重定向之后?)导致多个数据库行