Счетчик кликов при нажатии ссылки на PHP / JS

У меня есть небольшой скрипт, который подсчитывает клики при щелчке ссылки и сохраняет его в .txt-файле, но он отлично работает, когда у меня есть только «click = yes» под href. Но я не могу отслеживать клики, когда у меня есть ссылка на внешний сайт.

Вот мой код:

<?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> 

Я предполагаю, что он должен что-то делать с заголовком ('Location:'. $ _SERVER ['SCRIPT_NAME']); но я не могу понять это, поэтому я действительно могу помочь.

И как-то возможно сохранить несколько ссылок в одном файле, и когда я покажу его на веб-сайте, он отсортирован с наибольшего числа до наименьшего? У меня есть идея, как это сделать с базой данных MySQL, но я не могу использовать ее там, где это будет реализовано.

Заранее спасибо! Ура!

Ваш сервер никогда не видит доступ к URI , поскольку клиент покидает вашу страницу. Чтобы сделать что-то подобное, лучше всего настроить перенаправление, которое работает так

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

(Убедитесь, что URL внешнего сайта закодирован в URL, поскольку вы передаете его как компонент GET URL-адреса на свою собственную страницу)

Затем в goto.php вы сохраняете свой клик и отправляете заголовок перенаправления

 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']); 

Теперь вы можете отслеживать эти клики, вы можете добавлять свои счетчики для домена в goto.php вместо текстового файла

Вы можете использовать Javascript, чтобы поймать щелчок по ссылке, отправить данные через вызов AJAX. Вот небольшой пример с использованием JQuery.

 <html> <head> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <script> $( function() { $('a').click(linkClicked); } ); //this funciton will be called on every click on any link on page function linkClicked() { var url = $(this).attr('href'); //call PHP script to save URL ./saveurlclicks.php?url=CLICKEDURL $.get('./saveurlclicks.php', {'url': url}) //be sure to return true so user can navigate further return true; } </script> </head> <body> <a href='/some href' >asasa</a> <a href="www.google.com" >google</a> </body> </html> <?php //saveurlclicks.php // here we save links in file but using serialized array // if you need to get count of links clicked , // have a second script that unserializes array and sort it in revers order $url = @$_GET['url']; $counterFile = 'counter.ser'; if ($url) { if(file_exist($filename)) $links = unserialize(file_get_contents($filename)); else $links=array(); if (!isset($links[$url])) { $links[$url] = 0; } $links[$url] ++; file_put_contents($counterFile, serialize($links)); }