0

我正在使用以下代码将点击记录到视图表中,但是当我加载此页面时,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
4

3 回答 3

0

您能否告诉您用于测试的操作系统和浏览器。在 IOS 设备中尝试使用 safari 时,我曾经遇到过类似的问题。我的代码用于下载音频。对于所有操作系统,它都运行良好。但是对于 IOS 设备中的 safari,下载代码会被多次执行。请在其他浏览器上检查并让我们知道结果。

于 2013-04-17T21:29:39.273 回答
0

您使用的是模板引擎还是某种形式的 CMS?例如,我之前尝试过 Drupal,由于系统的钩子功能,一个文件可能会被多次调用.. 与模板引擎相同。这可能是问题所在。此外,由于与“标头已发送”案例相关的错误,回显某些内容可能会阻止其他脚本运行。这就是为什么即使你最后做了一个 die() ,它仍然不起作用。

于 2013-04-17T20:19:30.683 回答
0

脚本无法插入三行。

所以唯一的可能是脚本运行了 3 次。

我建议您检查 Web 服务器日志以了解对 URL 的访问。

于 2013-04-17T18:43:54.620 回答