sergey_prusov
Участник
- Регистрация
- 31 Окт 2008
- Сообщения
- 203
- Реакции
- 4
- Автор темы
- #1
Народ помогите сделать следующее. У меня свой сервис контекстной рекламы и Pop-up. Так вот, мне надо его защитить от накрутки. Ссылка которая рекламируется на сайтах партнера выглядет следующим образом
где id - это сайт
ids - это реклама
hash - это мой метод защиты
но проблема в следующем..... если обрезать ссылку до
реклама все равно будет показываться т.е hash вообще что есть что нет.... Так вот как бы мне можно было реализовать чтобы клик защитывался еще и по hash? Наверное надо сделать чтобы он записывался в базу.
код как генерится hash
а вот нужные страницы где все это реализуется
1)
2)
в общем надо сделать так чтобы проверка как-то была по hash я так думаю... Гуру помогите пожалуйста это реализовать:bc: если что-то понадобится то я выложу
---------- Post added at 19:46 ---------- Previous post was at 18:02 ----------
ну мне кот-нибудь поможет?
Добавлено через 48 минут
я как понимаю этот самый hash надо прикрутить как - нибудь к ids..... гуру нупомогите такой проект пропадает(((
HTML:
http://сайт/click/strike.php?id=21&sid=5&hash=30151c6396b69a7ff4da4a498de5c7fd
где id - это сайт
ids - это реклама
hash - это мой метод защиты
но проблема в следующем..... если обрезать ссылку до
HTML:
http://сайт/click/strike.php?id=21&sid=5
код как генерится hash
PHP:
function generatehash($length = 32, $charset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz")
{
$hash = "";
for ($i = 0; $i < $length; ++$i)
{
$hash .= $charset[rand(0, strlen($charset) - 1)];
}
return $hash;
}
а вот нужные страницы где все это реализуется
1)
PHP:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
</head>
<body bgcolor="#ffffe1" leftmargin="25" topmargin="3">
<?php
include "../cfg.php";
$id = intval($_GET['id']);
$get_user_info = mysql_query("SELECT no_adult, adult FROM webmasters WHERE id = ".$id." LIMIT 1");
$row = mysql_fetch_array($get_user_info);
$keys=generatehash();
$hash=md5($keys.$_SERVER['REMOTE_ADDR']);
if ($_GET['hash']!=$hash)
{
$f=fopen("click/log_strike.txt","a");
fputs($f,$wm_id."\t".$id."\t".$_SERVER['REMOTE_ADDR']."\t".date("Y-m-d H:i:s")."\t".$_SERVER['HTTP_REFERER']."\t".$_SERVER['HTTP_USER_AGENT']."\n");
fclose($f);
}
$no_adult = $row['no_adult'];
$adult = $row['adult'];
$sql = "";
if($no_adult) {
$sql .= " AND adult = 0";
}
if($adult) {
$sql .= " AND no_adult = 0";
}
$count = mysql_num_rows(mysql_query("SELECT id FROM strike WHERE clx > 0 AND status = 0".$sql));
if($count == 0) {
print "<a style=\"text-decoration: none; font-size: 12px; font-family: Tahoma, Verdana;\" href=\"http://сайт/\" target=\"_blank\"><b><font color=\"#333333\">сайт - Любой тип рекламы здесь!</font></b></a>";
} else {
$nums = rand(0, $count - 1);
$get_strike = mysql_query("SELECT id, name FROM strike WHERE clx > 0 AND status = 0".$sql." LIMIT ".$nums.",1");
$row = mysql_fetch_array($get_strike);
$sid = $row['id'];
$name = $row['name'];
print "<a style=\"text-decoration: none; font-size: 12px; font-family: Tahoma, Verdana;\" href=\"http://сайт/click/strike.php?id=".$id."&sid=".$sid."&hash=".$hash."\" target=\"_blank\"><b><font color=\"#333333\">".$name."</font></b></a>";
}
?>
</body>
</html>
2)
PHP:
<?php
function getip() {
if(getenv("HTTP_CLIENT_IP")) {
$ip = getenv("HTTP_CLIENT_IP");
} elseif(getenv("HTTP_X_FORWARDED_FOR")) {
$ip = getenv("HTTP_X_FORWARDED_FOR");
} else {
$ip = getenv("REMOTE_ADDR");
}
return $ip;
}
include "../cfg.php";
$id = intval($_GET['id']);
$sid = intval($_GET['sid']);
$get_user_info = mysql_query("SELECT id, url, user_id FROM webmasters WHERE id = ".$id." LIMIT 1");
$row = mysql_fetch_array($get_user_info);
$urlwm = $row['url'];
$wm_id = $row['user_id'];
if($row) {
$ip = getip(); // Переменная с IP
$brauzer = substr($_SERVER["HTTP_USER_AGENT"],0,50); // Браузер
$get_popup = mysql_query("SELECT id, url, clx FROM strike WHERE id = ".$sid." LIMIT 1");
$row = mysql_fetch_array($get_popup);
$sid = $row['id'];
$url = $row['url'];
$clx = $row['clx'];
$time = time() - $cfgTime;
$cfgPouseClick = time() - 300;
$count_click = mysql_num_rows(mysql_query("SELECT id FROM log_strike WHERE (ip = '".$ip."' AND date > ".$time.") OR (brouser = '".$brauzer."' AND date > ".$cfgPouseClick.")"));
if($count_click || $clx <= 0) {
print "<html><head><script language=\"javascript\">top.location.href=\"".$url."\";</script></head></html>";
} else {
$one_porcent = $cfgStrike / 100;
$admin_percent = sprintf("%01.4f", $one_porcent * $cfgHeaderPerc);
$wm_percent = $cfgStrike - $admin_percent;
mysql_query("UPDATE users SET balance=balance+".$wm_percent." WHERE id=".$wm_id." LIMIT 1");
mysql_query("UPDATE strike SET clx=clx-1, count=count+1 WHERE id=".$sid." LIMIT 1");
mysql_query("UPDATE webmasters SET clx_today=clx_today+1, m_today=m_today+".$wm_percent." WHERE id=".$id." LIMIT 1");
mysql_query("INSERT INTO log_strike (date, ip, idw, ids, price, url, brouser, fromurl) VALUES (".time().", '".$ip."', ".$id.", ".$sid.", ".$cfgStrike.", '".$urlwm."', '".$brauzer."', '".$_SERVER['HTTP_REFERER']."')");
// МЕСТО ГДЕ МОЖНО ПИСАТЬ СТАТИСТИКУ АДМИНУ
$date = date("d.m.Y");
mysql_query("UPDATE logs SET strike = strike + ".$admin_percent." WHERE date = '".$date."' LIMIT 1");
print "<html><head><script language=\"javascript\">top.location.href=\"".$url."\";</script></head></html>";
}
} else {
print "<html><head><script language=\"javascript\">top.location.href=\"".$cfgSiteUrl."\";</script></head></html>";
}
?>
в общем надо сделать так чтобы проверка как-то была по hash я так думаю... Гуру помогите пожалуйста это реализовать:bc: если что-то понадобится то я выложу
---------- Post added at 19:46 ---------- Previous post was at 18:02 ----------
ну мне кот-нибудь поможет?
Добавлено через 48 минут
я как понимаю этот самый hash надо прикрутить как - нибудь к ids..... гуру нупомогите такой проект пропадает(((