dsh7623 2014-09-28 16:57
浏览 55
已采纳

单击链接时点击计数器PHP / JS

I have a little script here that counts clicks when link is clicked and stores it in .txt file, but it works fine when I have only "click=yes" under href. But I can't make it to track clicks when I have link to external site.

Here is my code:

<?php
if(!file_exists('counter.txt')){
file_put_contents('counter.txt', '0');
}
if($_GET['click'] == 'yes'){
file_put_contents('counter.txt', ((int) file_get_contents('counter.txt')) + 1);
header('Location: ' . $_SERVER['SCRIPT_NAME']);
die;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>counter example</title>
</head>
<body>
<h1><?php echo file_get_contents('counter.txt'); ?></h1>
<a href="http://www.google.com?click=yes" target="new">clickMe</a>
</body>
</html>

My guess is it has to do something with header('Location: ' . $_SERVER['SCRIPT_NAME']); but I can't figure it out so I could really use some help.

And is it somehow possible to have multiple links save to the same file, and when I show it on website it's sorted from largest number to smallest? I have an idea how to do it with MySQL database but I can't use it at place where this will be implemented.

Thanks in advance! Cheers!

  • 写回答

2条回答 默认 最新

  • dongyun3805 2014-09-28 17:04
    关注

    Your server never sees the URI being accessed as the client leaves your page. To do something like this, it may be best to set up a redirect which works like this

    <a href="/goto.php?href=http://www.google.com" target="_blank">click me</a>
    

    (Make sure the external site's URL is URL encoded as you're passing it as a GET component of a URL to your own page)

    Then in goto.php you store your click and send a redirect header

    if(!file_exists('counter.txt')){
        file_put_contents('counter.txt', '0');
    }
    file_put_contents('counter.txt', ((int) file_get_contents('counter.txt')) + 1);
    header('Location: ' . $_GET['href']);
    

    Now you can track these clicks, you can add your domain-specific counters in goto.php instead of your text file

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题