PHP. Скрипт "У нас нашли" ("По какому запросу нашли сайт")

Khvosticov Sergey
Сообщения: 201
Зарегистрирован: 31 дек 2009
Скрипт у нас нашли оторванный от DLE.
И так выполняем SQL запрос :

Код: Выделить всё

CREATE TABLE IF NOT EXISTS `allcity_referer` (
  `id` int(11) NOT NULL auto_increment,
  `url` varchar(255) NOT NULL default '',
  `title` varchar(255) NOT NULL default '',
  `engine` varchar(255) NOT NULL default '',
  `date` varchar(20) default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


Прописываем код на странице сайта

Код: Выделить всё

 
<script type="text/javascript">
$.getScript('http://example.com/ref.php?page='+encodeURIComponent(document.referrer), function(){$('div#SerEngiDIV').html(SerEngiData)});
</script>


Там где http://example.com/ замените на свой url сайта.

Стиль :

Код: Выделить всё

 .RefRow {padding: 1px;}


Разбираем ref.php

Код: Выделить всё

$DB_User ='пользователь'; // Логин БД
$DB_Name ='база данных'; // База
$DB_Pass ='пароль'; // Пароль БД
$DB_Serv = 'localhost'; // Путь к серверу БД
$Max_Length = 30; // Обрезать слово? 0 = нет
$Limit = 10; // Сколько показывать результатов?
$uCoz_Doamin ='example.com'; // Домен сайта на uCoz без www


ref.php

Код: Выделить всё

<?php

/*
 * У нас нашли! для CMS uCoz ;)
 * Все права на данный скрипт принадлежат сайту AllCity.Net.Ru ~ http://allcity.net.ru/
 * Версия скрипта 1.2.0
 */

// Переменные
$RefPage = urldecode($_REQUEST['page']); // Переменная запрос Referer



// DB настройки
$DB_User =''; // Логин БД
$DB_Name =''; // Таблица
$DB_Pass =''; // Пароль БД
$DB_Serv = 'localhost'; // Путь к серверу БД
$Max_Length = 30; // Обрезать слово? 0 = нет
$Limit = 10; // Сколько показывать результатов?
$uCoz_Doamin ='example.com'; // Домен сайта на uCoz без www

// SQL Core
$SQLCon = mysql_connect($DB_Serv, $DB_User, $DB_Pass);
mysql_query('SET NAMES utf8');
mysql_select_db($DB_Name, $SQLCon);
if(!$SQLCon)
{
  die('Невозможно подключиться: '.mysql_error());
}

// Получение хоста
$URL_Parse = parse_url($RefPage);

// Список поисковиков
$EngiList = array(
  'Google' => 'google.',
  'Yandex' => 'yandex.',
  'Rambler' => 'rambler.ru',
  'Aport' => 'aport.ru',
  'Mail' => 'go.mail.ru',
  'Nigma' => 'nigma.ru',
  'Unknown' => true
);

// Сравнение
foreach($EngiList as $CurrEngi=>$Match)
{
  if(eregi($Match, $RefPage))
  {
    break;
  }
}

// Для тех кто страдает фигней!
$SiteReferer = $_SERVER['HTTP_REFERER'];
$SiteDomain = parse_url($SiteReferer);
$SiteDomain = str_replace('www.', '', $SiteDomain);

// Проверка
if($uCoz_Doamin != $URL_Parse['host'] && $CurrEngi != 'Unknown' && $SiteDomain['host'] == $uCoz_Doamin)
{
  // Получение запроса поиска
  switch($CurrEngi)
  {
    case 'Yandex':
      $Engine = 'Yandex';
      $SW = 'text=';
    break;
    case 'Rambler':
      $Engine = 'Rambler';
      $SW = 'words=';
    break;
    case 'Aport':
      $Engine = 'Aport';
      $SW = 'r=';
    break;
    case 'Mail':
      $Engine = 'Mail';
      $SW = 'q=';
    break;
    case 'Nigma':
      $Engine = 'Nigma';
      $SW = 's=';
    break;
    case 'Google':
    default:
      $Engine = 'Google';
      $SW = 'q=';
    break;
  }
  // Получение запроса и запись в БД
  $Title = $RefPage;
  eregi($SW.'([^&]*)', $Title.'&', $Title);
  if(!empty($Title))
  {
    mysql_query('INSERT INTO allcity_referer (url, title, engine, date) VALUES ("'.htmlspecialchars($RefPage, ENT_QUOTES).'", "'.htmlspecialchars($Title[1], ENT_QUOTES).'", "'.htmlspecialchars($Engine, ENT_QUOTES).'", UNIX_TIMESTAMP())');
  }
}


// Закрываем соединение с БД
mysql_close($SQLCon);

?>


Вывод
v-ref.php

Код: Выделить всё

<?
include "bd.php";
$result = mysql_query ("SELECT * FROM allcity_referer ORDER BY `id` DESC",$db);
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result);
do
{
$URL_Parse = parse_url($myrow['url']);
        $Title = ($Max_Length != 0 && strlen($myrow['title']) >= $Max_Length + 3) ? substr($myrow['title'], 0, $Max_Length).'...' : $myrow['title'];
        echo '<div class="RefRow"><img src="http://'.$_SERVER['SERVER_NAME'].'/refimg/'.mb_strtolower($myrow['engine']).'.gif" align="absmiddle" border="0" /> <a href="http://'.$URL_Parse['host'].'/" title="'.date('d.m.Y, H:i:s' ,$myrow['date']).'">'.$myrow['engine'].'</a>: <a href="'.$myrow['url'].'" title="'.$myrow['title'].'">'.$Title.'</a></div>';
        $Empty = false;
}
while ($myrow = mysql_fetch_array($result));
}
?>

Если нужно подключить в какой-то блок то подключаем функцией include

Код: Выделить всё

<?php include "v-ref.php" ?>


bd.php - конфиг сайта , я не стал писать код по подключению к базе данных , кому нужно тот перепишит , прошу ваши варианты вывода в ЛС.

-- добавлено 18 авг 2010, 12:08 --

Сейчас с Woin обсуждали этот скрипт и он посоветовал сделать лимит вывода , я забыл про него совсем берём строку из v-ref.php

Код: Выделить всё

$result = mysql_query ("SELECT * FROM allcity_referer ORDER BY `id` DESC",$db);


И заменяем на

Код: Выделить всё

$result = mysql_query ("SELECT * FROM allcity_referer ORDER BY `id` DESC LIMIT 10",$db);


Там где LIMIT 10 это вывод последних 10 запросов.
Вложения
nashli_u_nass.rar    3.96 КБ • 122 скачивания
Были времена я срывался и падал вниз, но всегда успевал ухватиться за карниз...

Аватара пользователя
AgentSIB
Администратор
Сообщения: 329
Зарегистрирован: 17 май 2010
Сперто с юкоза))) uCoz_Doamin - дух быдлокодинга?)) if(eto_cifra($stroka)){} )))
Frustra fit per plura quod potest fieri per pauciora © Закон "Бритвы Оккама"


Вернуться в «PHP»