LEOnidUKG: Вы смысле помочь? Вам за вас скрипт чтоли написать? Это в другой платный раздел.
Да не нужно платно писать, есть уже готовые скрипты подобного рода. Года 2 назад находил на одном из форумов.
---------- Добавлено 11.04.2013 в 13:35 ----------
izbushka: Идея как уже сказали такая:
Когда генерируете страницу, проверяете HTTP_REFERER,
если он похож на то что вам надо (google, yandex, etc) то ставим броузеру куку
При регистрации скрипт signup.php проверяет куку (if(!empty($_COOKIE['referer'])) ...) и делает что там надо.
Спасибо, но мне не обязательно что бы реф был с гугл, возможно к примеру ссылка на moysite.com будет на этом форуме, соответственно реф будет searchengines.ru, человек не увидит signup.php, а его подмену signup2.php
netwind: по существу, да неправда.
Cейчас сделал два подсчета на своем сайте на основании первичной информации, а не скриптов. (идея, которую ты уже дважды проигноировал ).
Команды привожу для удобства повторения эксперимента :
Все мозиллы передавшие строчку 'http://' в лог
grep Mozilla access.log | grep 'http://' | grep -v Googlebot| grep -v Yandex| wc -l
512004
просто все мозиллы
grep Mozilla access.log | grep -v Googlebot| grep -v Yandex| wc -l
546054
итого только в 6% запросов браузеров представляющихся как mozilla нет referer
Сорри, очень спешу сейчас. Посмотрю более детально о чём ты написал.
Сейчас вот какой вопрос.
Возможно ли как-нибудь определить человека, кто просто вбил ссылку в браузер
или кликнул по ссылке и зашёл на сайт?
возможно скриптик какой-нибудь дописать
соответственно тех кто вбил в браузер - редиректило куда нужно.
Ходят но не половина пользователей. Это не сайт для букмарков вобще.
jano добавил 12-11-2011 в 12:10
dyakoff: Нее, сам прикол в том, что реферер теряется не понятно где и в браузере он не отключается при этом. Просто мозила по дефолту через раз передает реферер, без каких либо отключений и т.д.
Вот, уже по существу. Похоже такая функция, как http referrer в настоящее время потеряла ликвидность.
Интересно кто-нибудь сталкивался с такой проблемой, как заставить браузеры адекватно http ref передавать? Возможно как-то через яву или нет смысла?
AlExTeam: а, ну значит есть те, кто переходит по ссылкам, встявляя их в строку браузера.
Тут уж ничо не поможет, разве что слезно просить гостей сказать откуда прийшли. =)
Половина пользователей не может копировать ссылки в браузер и заходить на сайт таким не удобным способом.
Да в челом проверяли ведь мы. К примеру есть ид 56334, отписали человеку с каких ресурсов идёт трафик и какого типа стоит реклама.
Попандеров, вобще открытых ссылок нет у него, всё чисто. А ~30-40% идут без рефа и у всех так.
bums: в Mozilla about:config и там network.http.sendRefererHeader=0 или экстейшены есть отключающие в 1 клик
в опере тоже где то отключается передача реферера
Вы верите, что у половины пользователей отключены рефы? Мне с трудом верится, не возможно такое.
netwind: jano, я код без денег не могу читать. словами нормально и понятно можешь объяснить ?
Выше кода написал суть проблемы.
dyakoff: mozilla имеет свойство не передавать referer. не сомневаюсь, если проверите, то именно с этим браузером посетители редиректятся.
Была такая проблема, так и не решили ее.
У меня Mozilla(3,6 версия), реф передаёт на ура.
Заглянул в логи апача, вправду редиректит только тех у кого эти браузеры:
Opera/9.80
Mozilla/4.0
Mozilla/5.0
Нужно будет проверить.
AlExTeam: Больше всего что 99% без рефа - это боты.
В случаях отсуцтвия рефа делайте не редирект, а вывод сообщения, что мол вы бот и сцылу на js.history()-1, т.е. туда откудова прийшли.
Логи апача смотрел в первую очередь, боты есть конечно, но они не учитываются.
Вы смысле помочь? Вам за вас скрипт чтоли написать? Это в другой платный раздел.
Да не нужно платно писать, есть уже готовые скрипты подобного рода. Года 2 назад находил на одном из форумов.
---------- Добавлено 11.04.2013 в 13:35 ----------
Идея как уже сказали такая:
Когда генерируете страницу, проверяете HTTP_REFERER,
если он похож на то что вам надо (google, yandex, etc) то ставим броузеру куку
При регистрации скрипт signup.php проверяет куку (if(!empty($_COOKIE['referer'])) ...) и делает что там надо.
Спасибо, но мне не обязательно что бы реф был с гугл, возможно к примеру ссылка на moysite.com будет на этом форуме, соответственно реф будет searchengines.ru, человек не увидит signup.php, а его подмену signup2.php
Кто-нибудь может помочь?
Вам надо при рефере сразу вешать человеку куку или заводить на него сессию, и уже следить за ними и куда надо перенаправлять.
Без разницы как, главное что бы работало условие.
Если у человека есть HTTP_REF не нагуленнай на нашем же сайте, то при клике на signup.php - редиректило на signup2.php
Ежели человек без рефа или который принадлежит моему же сайте, то соответственно при клике на signup.php открывалась эта же страница (signup.php)
Дорвейный раздел - ниже.
Это не для доров, а абсолютно для других целей.
по существу, да неправда.
Cейчас сделал два подсчета на своем сайте на основании первичной информации, а не скриптов. (идея, которую ты уже дважды проигноировал ).
Команды привожу для удобства повторения эксперимента :
Все мозиллы передавшие строчку 'http://' в лог
grep Mozilla access.log | grep 'http://' | grep -v Googlebot| grep -v Yandex| wc -l
512004
просто все мозиллы
grep Mozilla access.log | grep -v Googlebot| grep -v Yandex| wc -l
546054
итого только в 6% запросов браузеров представляющихся как mozilla нет referer
Сорри, очень спешу сейчас. Посмотрю более детально о чём ты написал.
Сейчас вот какой вопрос.
Возможно ли как-нибудь определить человека, кто просто вбил ссылку в браузер
или кликнул по ссылке и зашёл на сайт?
возможно скриптик какой-нибудь дописать
соответственно тех кто вбил в браузер - редиректило куда нужно.
jano, а что, с закладок к тебе не ходят?
Ходят но не половина пользователей. Это не сайт для букмарков вобще.
jano добавил 12-11-2011 в 12:10
Нее, сам прикол в том, что реферер теряется не понятно где и в браузере он не отключается при этом. Просто мозила по дефолту через раз передает реферер, без каких либо отключений и т.д.
Вот, уже по существу. Похоже такая функция, как http referrer в настоящее время потеряла ликвидность.
Интересно кто-нибудь сталкивался с такой проблемой, как заставить браузеры адекватно http ref передавать? Возможно как-то через яву или нет смысла?
а, ну значит есть те, кто переходит по ссылкам, встявляя их в строку браузера.
Тут уж ничо не поможет, разве что слезно просить гостей сказать откуда прийшли. =)
Половина пользователей не может копировать ссылки в браузер и заходить на сайт таким не удобным способом.
Да в челом проверяли ведь мы. К примеру есть ид 56334, отписали человеку с каких ресурсов идёт трафик и какого типа стоит реклама.
Попандеров, вобще открытых ссылок нет у него, всё чисто. А ~30-40% идут без рефа и у всех так.
в Mozilla about:config и там network.http.sendRefererHeader=0 или экстейшены есть отключающие в 1 клик
в опере тоже где то отключается передача реферера
Вы верите, что у половины пользователей отключены рефы? Мне с трудом верится, не возможно такое.
jano, я код без денег не могу читать. словами нормально и понятно можешь объяснить ?
Выше кода написал суть проблемы.
mozilla имеет свойство не передавать referer. не сомневаюсь, если проверите, то именно с этим браузером посетители редиректятся.
Была такая проблема, так и не решили ее.
У меня Mozilla(3,6 версия), реф передаёт на ура.
Заглянул в логи апача, вправду редиректит только тех у кого эти браузеры:
Opera/9.80
Mozilla/4.0
Mozilla/5.0
Нужно будет проверить.
Больше всего что 99% без рефа - это боты.
В случаях отсуцтвия рефа делайте не редирект, а вывод сообщения, что мол вы бот и сцылу на js.history()-1, т.е. туда откудова прийшли.
Логи апача смотрел в первую очередь, боты есть конечно, но они не учитываются.
// counter name
$log .= "$sid|$m_id|$counter\n";
// save stats
if (($fp = fopen('/home/dp/spool/stats', 'a')) !== FALSE) {
fwrite($fp, $log);
fclose($fp);
@chmod('/home/dp/spool/stats', 0777);
}
// GeoIP redirect
if (isset($geo_rd_url) && $geo_rd_url != "-" && !isset($_GET['wmlink'])) {
if (strlen($geo_rd_url) > 7 && substr($geo_rd_url, 0, 7) == "http://") {
// redirect
header("Location: $geo_rd_url");
exit(302);
}
else {
// show text
print "$geo_rd_url";
exit;
}
}
// &tour= param
unset($page);
if (isset($_GET["tour"])) $page = urldecode($_GET["tour"]);
if ($page != "" && !isset($_GET["rd"])) {
$c = !strpos($page, "?") ? "?" : "&";
if ($id != "") {
$url = $page.$c."id=$id&ref=$ref&rd=1";
}
else {
$url = $page.$c."ref=$ref&rd=1";
}
if ($_GET['ex'] != "") {
$url .= "&ex=".$_GET['ex'];
}
header("Location: $url");
exit(302);
}
// design num
unset($des);
if (isset($_GET['d'])) {
$des = $_GET['d'];
}
else {
// no &d= - try define design by uri
if (isset($designs[$_SERVER["SCRIPT_NAME"]])) {
$des = $designs[$_SERVER["SCRIPT_NAME"]];
}
}
// compose %id tag
$dpid = "?id=$id&ref=$ref";
$dpid2 = "&id=$id&ref=$ref";
$dpid3 = "id=$id&ref=$ref&";
if ($_GET['ex'] != "") {
// exit urls
$dpid .= "&ex=".$_GET['ex'];
$dpid2 .= "&ex=".$_GET['ex'];
$dpid3 .= "ex=".$_GET['ex']."&";
}
if ($_GET['tr'] != "") {
// banners tracking
$dpid .= "&tr=".$_GET['tr'];
$dpid2 .= "&tr=".$_GET['tr'];
$dpid3 .= "tr=".$_GET['tr']."&";
}
if ($_GET['ps'] != "") {
// persignup links
$dpid .= "&ps=".$_GET['ps'];
$dpid2 .= "&ps=".$_GET['ps'];
$dpid3 .= "ps=".$_GET['ps']."&";
}
if (isset($des) && $des != "0") {
// add design number for joins
$dpid .= "&d=".$des;
$dpid2 .= "&d=".$des;
$dpid3 .= "d=".$des."&";
}
// geogroups redirect
$cntr = get_country();
if ($is_index && isset($geo_designs[$cntr])) {
$page = $geo_designs[$cntr];
$url = $dpid != "" ? "$page$dpid" : "$page";
header("Location: $url");
exit(302);
}
// custom designs redirect
if ($is_index && isset($custom_designs[$m_id]) ) {
header("Location: ".$custom_designs[$m_id].$dpid);
exit(302);
}
if ($is_index&& !in_array($sid, $ss)) {
header("Location: /indexx2.html");
exit(302);
}
}
function geo_include($group, $file) {
global $geo_groups;
$cntr = get_country();
if ($geo_groups[$cntr] == $group) {
// country match group
if (is_readable($file)) {
include($file);
}
else {
print "\n<!-- geo_include : can't find file '$file' -->\n";
}
}
}
// FHG procedure
function dpfhg($sid) {
global $_SERVER, $_GET;
global $fhgid, $fhgtourid;
$self = $_SERVER["REQUEST_URI"];
if (($n = strpos($self, "?")) !== FALSE ) {
$self = substr($self, 0, $n);
}
// webmaster
if (isset($_GET["id"])) {
$id = $_GET["id"];
}
else {
// try cookie
if (isset($_COOKIE["id"])) {
$id = $_COOKIE["id"];
}
}
$m_id = get_m_id($id);
/*
$bmk = isset($_SERVER['HTTP_REFERER']);
if ($m_id == "0" || $bmk) {
$url = 'http://domain.com/';
if (isset($_GET['id'])) $url = "http://domain2.com/enter.php?id=".$_GET['id'];
header("Location: $url");
exit(302);
}
*/
// ban status
check_ban_status($m_id);
// save stats
if (!isset($_GET['pp'])) {
$log = "$sid|$m_id|raw|$self\n";
if (!isset($_COOKIE["uniq"])) {
$log .= "$sid|$m_id|uniq|$self\n";
}
if (isset($_SERVER["HTTP_REFERER"])) {
$sr_crc = ref_crc($_SERVER['HTTP_REFERER']);
$log .= "$sid|$m_id|ref|{$_SERVER['HTTP_REFERER']}|$self\n";
}
else {
$log .= "$sid|$m_id|ref|bookmark|$self\n";
}
$fp = fopen('/home/dp/spool/stats', 'a');
fwrite($fp, $log);
fclose($fp);
}
// set uniq cookie
setcookie("uniq", '1', time()+(60*60*24));
if ($m_id != "0") {
setcookie("id", $id, time()+(60*60*24*WM_COOKIE_DAYS));
}
// banners tracking
if (isset($_GET['tr'])) {
$tr = "&tr=".$_GET['tr'];
}
// persignup links
if (isset($_GET['ps'])) {
$ps = "&ps=".$_GET['ps'];
}
// FHS pages
if (isset($_GET['pp'])) {
$self = $_GET['pp'];
}
// compose $fhgid
if ($id != "") {
$fhgid = "?id=$id&p=$sid&pp=$self$tr$ps";
$fhgtourid = "&id=$id&p=$sid&pp=$self$tr$ps";
}
else {
$fhgid = "?p=$sid&pp=$self$tr$ps";
$fhgtourid = "&p=$sid&pp=$self$tr$ps";
}
}
?>
// ids
if (isset($_GET["id"]) && $_GET["id"] != '') {
$id = $_GET["id"];
}
else {
// try from cookie
if (isset($_COOKIE["id"])) {
$id = $_COOKIE["id"];
}
}
if (isset($_COOKIE["id"]) && ($self == $mainjpage || in_array($self, $jpages) || $counter == "join")) {
$join_c_ref = $_COOKIE["ref"];
}
$m_id = get_m_id($id);
// ban status
check_ban_status($m_id);
// back from alias
$real_id = get_real_id($m_id);
if (isset($real_id)) {
$id = $real_id;
}
// referer
// $loc_ref = strstr($_SERVER["HTTP_REFERER"], $_SERVER["HTTP_HOST"]) !== FALSE;
$ref = "bookmark";
$bmk = TRUE;
if (isset($_SERVER["HTTP_REFERER"])) {
$ref = $_SERVER["HTTP_REFERER"];
$bmk = FALSE;
}
else {
if (isset($_COOKIE['ref'])) {
$ref = $_COOKIE['ref'];
}
}
if (isset($_GET['ref'])) {
$ref = $_GET['ref'];
}
if (!$is_index) {
$ref = urlencode($ref);
}
if (($m_id == "0" || $bmk) && !in_array($sid, $ss)) {
$url = 'http://domain.com/';
if (isset($redir[$sid])) $url = $redir[$sid];
if (isset($_GET['id'])) $url .= "?id=".$_GET['id'];
header("Location: $url");
exit(302);
}
$dpid = "?id=$id&ref=$ref";
$dpid2 = "&id=$id&ref=$ref";
$dpid3 = "id=$id&ref=$ref&";
// traffic back
if (isset($_GET['ex']) && isset($exit_urls[$m_id][$_GET['ex']])) {
$trback_exit_url = $exit_urls[$m_id][$_GET['ex']];
}
// banners tracking - restore from cookie
if (!isset($_GET["tr"])) {
$_GET["tr"] = $_COOKIE["tr"];
}
// PPS links
if (!isset($_GET['ps']) && isset($_COOKIE['ps'])) {
//$_GET["ps"] = $_COOKIE["ps"];
}
// compose join tags
// referer checksum
$crc = ref_crc(isset($_GET['ref']) ? $_GET['ref'] : $join_c_ref);
// common
$sv_id = $id."_".$crc."_";
$p2e_id = $sv_id.$sid;
$er_id = $m_id == 0 ? "a" : $id;
if ($_GET['tr'] != "") {
$sv_id .= $_GET['tr'];
}
$sv_id .= "_";
if ($_GET['ps'] != "") {
$sv_id .= "ps";
}
// verotel
$verotel_id = substr($crc, 0, 8).$id;
$verotel_tr_id = $_GET['tr'];
// CCBILL
if (get_ccbill_id($id) != "") {
$ccbj_id = "<input type='hidden' name='ccbill_referer' value='".get_ccbill_id($id)."'>";
$ccbj_get_id = "&ccbill_referer=".get_ccbill_id($id);
}
else {
if (CCBILL_HEX_ID) {
$ccbj = sprintf("%04X%8s%-3s", $m_id, $crc, substr($_GET["tr"], 0, 3));
}
else {
$ccbj = sprintf("%04d%8s%-3s", $m_id, $crc, substr($_GET["tr"], 0, 3));
}
if ($_GET["ps"] == "1" || $_COOKIE["ps"] == "1") {
if (CCBILL_HEX_ID) {
$ccbj[0] = chr(ord($ccbj[0]) + 25);
}
else {
$ccbj[0] = chr(ord('a') + $ccbj[0]);
}
}
$ccbj_id = "<input type='hidden' name='referer' value='".$ccbj."'>";
$ccbj_get_id = "&referer=".$ccbj;
}
// handle join pages
if ($self == $mainjpage || in_array($self, $jpages) || $counter == 'join') {
// counter name
$log .= "$sid|$m_id|$counter\n";
$fp = fopen('/home/dp/spool/stats', 'a');
fwrite($fp, $log);
fclose($fp);
// custom join page
if (($self == $mainjpage || $counter == 'join') && isset($custom_joins[$m_id]) ) {
$jp = getcwd().$custom_joins[$m_id];
if (file_exists($jp)) {
include($jp);
}
else {
print "can't find custom join page '$jp'\n";
}
exit;
}
return;
}
// ccbill data
$ccbill_id = get_ccbill_id($id);
$client_id = get_client_id();
// ccbill redirect
if ($is_index && $ccbill_id != "" && !exist_ip()) {
save_ip();
$url = "http://refer.ccbill.com/cgi-bin/clicks.cgi?CA=".$client_id."-0000&PA=".$ccbill_id."&HTML=http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"];
header("Location: $url");
exit(302);
}
$log = "";
// country
unset($geo_rd_url);
$cntr = get_country();
if (isset($c_enter[$cntr][$m_id])) {
$geo_rd_url = $c_enter[$cntr][$m_id];
}
else {
// try direct account settings
if (isset($c_enter[$cntr]["0"])) {
$geo_rd_url = $c_enter[$cntr]["0"];
}
}
// save stats
if ($is_index) {
$log .= "$sid|$m_id|cntr|$cntr\n";
}
if ($is_index && !isset($geo_rd_url)) {
$log .= "$sid|$m_id|raw\n";
if (!isset($_COOKIE["uniq"])) {
$log .= "$sid|$m_id|uniq\n";
}
if (isset($_SERVER["HTTP_REFERER"])) {
$r = $_SERVER["HTTP_REFERER"];
$sr_crc = ref_crc($_SERVER['HTTP_REFERER']);
$log .= "$sid|$m_id|sref|{$_SERVER['HTTP_REFERER']}|$sr_crc\n";
}
else {
$log .= "$sid|$m_id|ref|bookmark\n";
}
// banners tracking
if (isset($_GET["tr"])) {
$log .= "$sid|$m_id|tr|".$_GET["tr"]."\n";
// blogs stats
if (isset($_GET["rss"])) {
// blog click
$log .= "$sid|$m_id|bl|".$_GET["tr"]."\n";
// blog referer
$r = isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : "bookmark";
$sr_crc = ref_crc($r);
$log .= "$sid|$m_id|blref|$r|$sr_crc\n";
}
}
// FHG tracking
//if (isset($_GET["port"]) && isset($_GET["pp"])) { // &port= - cl-cash local hack ?
if (isset($_GET["p"]) && isset($_GET["pp"])) {
$log .= "$sid|$m_id|fhg|".$_GET["p"]."|".$_GET["pp"]."\n";
}
// proxy
foreach (array("HTTP_X_FORWARDED_FOR", "HTTP_VIA", "HTTP_CLIENT_IP") as $header) {
if (isset($_SERVER[$header])) {
$log .= "$sid|$m_id|proxy\n";
break;
}
}
// set cookies
setcookie("uniq", '1', time()+(60*60*24));
setcookie("id", $id, time()+(60*60*24*WM_COOKIE_DAYS));
//var_dump($_SERVER);
if (isset($_SERVER["HTTP_REFERER"])) {
//print "XXX2";
setcookie("ref", $_SERVER["HTTP_REFERER"], time()+(60*60*24*WM_COOKIE_DAYS));
}
if (isset($_GET["tr"])) {
setcookie("tr", $_GET["tr"], time()+(60*60*24*30));
}
// persignup
setcookie("ps", isset($_GET["ps"]) ? "1" : "0", time()+(60*60*24*WM_COOKIE_DAYS));
}
Доступ по ftp есть ?
Сколько платите ?
Что-то меня первый вопрос очень смутил. :)
Скинь контакт в личку или здесь, переговорим.