Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.12.2010, 16:32   #1
leny
Пользователь
 
Регистрация: 30.12.2010
Сообщений: 11
По умолчанию Скрипт мониторинга кликов Яндекс Директ

Всем привет.
Нужна помощь...
Имеется скрипт статистики кликов для контекстной рекламы Яндекс Директ.
Задача - переделать его под google adsense
В скрипте два файла. Первый написанный на javascript (dmonitor.js), второй - на php(index.php).

dmonitor.js

///////////////////////////////////////////////////////////
// CS Direct Monitor v.0.5
// Client-side Javascript Part
// http://www.controlstyle.ru/
///////////////////////////////////////////////////////////
function dmMain()
{
if (typeof window.addEventListener != "undefined")
{
window.addEventListener("click", dmLogClick, false);
}
else if (typeof document.attachEvent != "undefined")
{
document.attachEvent("onclick", dmLogClick);
}
}
function dmFindLink(element)
{
while(element.parentNode)
{
if (element.href) return element;
element = element.parentNode;
}
return false;
}
function dmPrepareSpan(s)
{
String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); };
var re = /<[^<>]+>/gi;
var re2 = /[^a-z\.\-\d]+/g;
var re3 = /\s/g;
var re4 = /\s[a-z]+\s/g;
s = s.replace(re, '');
s = s.replace(re2, ' ');
s = ' ' + s.replace(re3, ' ') + ' ';
s = s.replace(re4, ' ');
return s.trim();
}
function dmLogClick(e)
{
var obj = (e.target)?e.target:event.srcElemen t;
var spanUrl = 'n/a';
obj = dmFindLink(obj);
if (!obj) return true;
if (obj.href.indexOf('.yandex.ru/count')==-1 && obj.href.indexOf('.googlesyndicatio n.com/pagead')==-1) return true;
if (dmXmlDoc)
{
if (obj.parentNode.parentNode)
{
var spanParent = obj.parentNode.parentNode;
for (var i=0; i<spanParent.childNodes.length; i++)
{
var tmp = spanParent.childNodes[i];
if (!tmp.className) continue;
if (tmp.className.toLowerCase()=='url' &&tmp.tagName.toLowerCase()=='span' )
{
spanUrl = dmPrepareSpan(tmp.innerHTML);
}
}
}
var data = encodeURIComponent(obj.innerHTML+'; '+spanUrl+';'+location.href+';'+doc ument.referrer);
dmXmlDoc.open("GET", 'http://' + location.host + '/dmonitor/index.php?data=' + data, true);
dmXmlDoc.send(null);
}
return true;
}
function dmCreateXmlDoc()
{
var dmXmlDoc = null;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
try {
dmXmlDoc = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
dmXmlDoc = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
dmXmlDoc = false;
}
}
@end @*/
if (!dmXmlDoc && typeof XMLHttpRequest!='undefined') {
try {
dmXmlDoc = new XMLHttpRequest();
} catch (e) {
dmXmlDoc=false;
}
}
if (!dmXmlDoc && window.createRequest)
{
try
{
dmXmlDoc = window.createRequest();
} catch (e)
{
dmXmlDoc=false;
}
}
return dmXmlDoc;
}
var dmXmlDoc = dmCreateXmlDoc();
dmMain();
///////////////////////////////////////////////////////////
// End Of CS Direct Monitor
///////////////////////////////////////////////////////////


index.php

<?php
///////////////////////////////////////////////////////////
// CS Direct Monitor v.0.5
// Server-side PHP Part
// http://www.controlstyle.ru/
///////////////////////////////////////////////////////////

# config
$stat_file = 'data.csv';

# functions
function file_append_contents($filename, $content)
{
if (!$handle = fopen($filename, 'ab+')) return false;
$cnt = 10;
$ret = flock($handle, LOCK_EX);
while(!$ret&&$cnt>0)
{
$ret = flock($handle, LOCK_EX);
$cnt--;
}
if ($ret)
{
fwrite($handle, $content);
flock($handle, LOCK_UN);
chmod($filename, 0666);
}
fclose($handle);
}

# other code
if (!isset($_GET['data'])) die;
$data = trim(strip_tags(date('D, d M Y H:i:s') . ';' . trim(stripslashes($_GET['data']) . ';' . $_SERVER['REMOTE_ADDR']))) . "\r\n";
file_append_contents($stat_file, iconv('utf-8', 'windows-1251', $data));
?>


Помогите пожалуйста...
Заранее спасибо!!!
leny вне форума Ответить с цитированием
Старый 30.12.2010, 20:54   #2
Виталий Желтяков
Старожил
 
Аватар для Виталий Желтяков
 
Регистрация: 19.04.2010
Сообщений: 2,702
По умолчанию

А в google code покопаться слабо?
Виталий Желтяков вне форума Ответить с цитированием
Старый 30.12.2010, 21:09   #3
leny
Пользователь
 
Регистрация: 30.12.2010
Сообщений: 11
По умолчанию

в каком google code? Тот который выводит сам гугл?
leny вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт мониторинга web сайтов php+cron и т.д. webber9989 Фриланс 1 29.06.2010 08:05
Обработка кликов TСooltrayicon Shouldercannon Компоненты Delphi 2 04.06.2009 21:58
обработка кликов в treeview CraZZy RabbIt Общие вопросы Delphi 2 28.03.2009 22:28
Отлов кликов мыши LAFUDR Помощь студентам 9 24.05.2008 01:32
скрипт который будет сам формировать запрос в Яндекс Antivoin HTML и CSS 1 18.08.2007 19:23