php akıllı bir öğrenci

3 Cevap php

Yönlendirmeler sayacaktır bir html veya php sayfa oluşturmak için bir olasılık var mı?

Yani, en bunu bir link ile bir sayfa var diyelim. Ben sayfa bağlantı ip adresine ya da kullanıcı başına tıklandığında kaç kez saymak istiyorum. Sayma, bir günlük dosyası veya metin belgeye rapor olacaktır.

3 Cevap

Sen Piwik gibi bazı web istatistik yazılımı kullanabilirsiniz.

Outlink yakalanan böylece de bağlantıları eklemek olabilir. Ben bazı temel kodu dahil ettik.

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

Eğer CodeIgniter gibi bir çerçeve kullanılması durumunda Sonra kontrolöre bu ekleyin. add_outlink bir veritabanı seçin ve isterseniz bir IP adresi, bağlantı ve datestamp ile bir satır eklemek istiyorum.

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

    header("Location: ".$url);
}

*. PHP çözüm. Bir bağlantı oluşturacak bir işlev oluşturun:

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

Şablonlarınızda bağlantıları eklemek için bu işlevi kullanın:

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

Sonra tıklayın kayıt ve ilgi url kullanıcıyı yönlendirir counter.php oluşturun.

*. JavaScript çözümü. Eğer Ajax kullanarak iseniz, JQuery kullanmak ve her bağlantı için onclick olayı ekleyebilirsiniz. Link tıklandığında, javascript sunucu üzerinde sayaç ajax çağrısı yapar. Eğer zaten birçok şablonlar var ve hepsini değiştirmek istemiyorsanız bu varyant durum için bir çözüm olarak kabul edilebilir.

Öncelikle kaydetmek için bir sql tablo yapmak;

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;

Eğer php kodları ile IP adresleri öğrenmek ve global bir değişken ip yapmak için bilmeniz gerekir daha;

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

Bir senaryo yapmak daha;

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

Bu gibi bağlantı yapmak daha;

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

ve son bir record.php yapmak;

$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);
    }
}