我使用以下代码将命中记录到视图表中,但是当我加载此页面时,MySQL查询一次插入3行,因此1次命中意味着3次点击。我想弄明白,但不能运气。
$width = 16;
$height = 16;
$id = 30
$ip = $_SERVER['REMOTE_ADDR'];
$user_agent = $_SERVER['HTTP_USER_AGENT'];
//count views
global $db;
$sql = 'INSERT INTO '.DB_PREFIX.'views (invoice_id, ip, user_agent)
VALUES ("' . $id . '",
"' . ip2long($ip) . '",
"' . $user_agent . '")';
$db->query($sql);
//display image
header( "Content-type: image/png" );
$img = imagecreate($width, $height);
$background_color = imagecolorallocate($img, 238, 238, 238);
imagepng($img);
imagedestroy($img);
如果我用简单的echo "Successfully done!"
替换显示图像代码,问题就解决了,它只插入一行。
mysql行
id invoice_id ip user_agent dnt
35 22 2058457116 Mozilla/5.0 2013-04-17 11:55:12
34 22 2058457116 Mozilla/5.0 2013-04-17 11:55:12
33 22 2058457116 Mozilla/5.0 2013-04-17 11:55:11
答案 0 :(得分:0)
脚本无法插入三行。
所以唯一的可能是脚本运行了三次。
我建议您检查Web服务器日志以获取对URL的访问。
答案 1 :(得分:0)
您使用的是模板引擎还是某种类似的CMS?例如,我之前尝试过Drupal,并且由于系统的钩子功能,文件可能被多次调用..与模板引擎相同。这可能是问题所在。此外,由于与“已发送的标头”相关联的错误情况,回显某些内容可能会阻止其他脚本运行。这就是为什么即使你最后做了die(),它仍然无效。
答案 2 :(得分:0)
请告诉您用于测试的操作系统和浏览器。 我在IOS设备中尝试使用safari时遇到了类似的问题。 我的代码是用于下载音频。对于所有操作系统,它工作正常。但对于IOS设备中的safari,下载代码被多次执行。 请在其他浏览器上查看此信息并告知我们结果。