php умный ученик - PullRequest
       4

php умный ученик

1 голос
/ 16 апреля 2010

Есть ли возможность создать html или php страницу, которая будет считать перенаправления?

Я имею в виду, допустим, у вас есть страница со ссылкой. Я хочу, чтобы страница подсчитывала, сколько раз нажата ссылка на IP-адрес или имя пользователя. Счет будет записан в файл журнала или текстовый документ.

Ответы [ 3 ]

0 голосов
/ 21 апреля 2010

*. PHP решение. Создайте функцию, которая будет генерировать ссылку:

function getCounterLink($url)
{
   if (urlLocal($url)) // no need to count the click
      return $url;
   return 'http://mysite.com/counter.php?url='.urlencode($url);
}

Используйте эту функцию для добавления ссылок в ваши шаблоны:

<a href="<?php echo getCounterLink($url) ?>">Link</a>

Затем создайте counter.php, который зарегистрирует щелчок и перенаправит пользователя на интересующий URL.

*. Решение JavaScript. Если вы используете Ajax, вы можете использовать JQuery и добавить событие onclick для каждой ссылки. Когда ссылка нажата, javascript выполняет ajax-вызов к счетчику на сервере. Этот вариант можно рассматривать как обходной путь для случая, когда у вас уже есть много шаблонов, и вы не хотите изменять их все.

0 голосов
/ 28 апреля 2010

Прежде всего создайте таблицу sql для записи;

CREATE TABLE `link_counter` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  `link` text COLLATE utf8_general_ci NOT NULL,
  `ip` text COLLATE utf8_general_ci NOT NULL,
  `times` int(11) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_general_ci;

чем вы должны знать, чтобы узнать IP-адреса с помощью php-кодов и создать глобальную переменную ip;

    if (!empty($_SERVER['HTTP_CLIENT_IP']))   
        {
          $ip=$_SERVER['HTTP_CLIENT_IP'];
        }
        else if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) 
        {
          $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
        }
        else
        {
          $ip=$_SERVER['REMOTE_ADDR'];
        }
echo '<script type="text/javascript">
var ip='.$ip.';
</script>';

чем сделать скрипт;

<script type="text/javascript">
function record(link) 
{ //jquery
    $.post("record.php",{ link: link , ip: ip});    //post link to record.php
    location.href=link;                             //go to link    
}
</script>

чем делать ссылки вот так;

<a href="#" onclick="record('http://www.google.com')">GOOGLE</a>

и последний делает запись.php;

$link=$_POST['link'];
$cip=$_POST['ip'];
if ($link!='' && $cip!='') 
{
  $sorgu="select count(id),times,id from link_counter where link=".$link." and ip=".$cip;
  $what=mysql_query($sorgu);
  while ($isit=mysql_fetch_array($what)) 
  {
  $recorded=$isit['count(id)'];
  $id=$isit['id'];;
          if ($recorded>0) 
          {
          $times= $isit['times'];
          }
          else 
          {
          $times=0;
          }
  }
$add_times=$times+1;
    if ($recorded>0)
    {
    $add="update link_counter set times='".$add_times."' where id='".$id."'";
    $add_action=mysql_query($add);
    }
    else 
    {
    $add="insert into link_counter times='".$add_times."' , link='".$link."' , ip='".$cip."'";
    $add_action=mysql_query($add);
    }
}
0 голосов
/ 16 апреля 2010

Вы можете использовать программное обеспечение для веб-статистики, например Piwik .

Вы также можете добавить ссылки, чтобы перехватить ссылку. Я включил базовый код.

<a href="http://sitedomain.com/question/{url}">Link to be counted</a>

Тогда, если вы используете фреймворк, такой как CodeIgniter, добавьте его в свой контроллер. add_outlink выберет базу данных и добавит строку с IP-адресом, ссылкой и отметкой даты, если хотите.

function question($url)
{
    $this->add_outlink($url);

    header("Location: ".$url);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...