kodex77
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Приветствую. Есть очень старый модуль для движка DLE - Dude Smart Leech, которое актуально и работает до сих пор. Данный скрипт осуществляет скрытие и обработку внешних ссылок. При переходе по ссылке, пользователь попадает на отдельную страницу (прелендинг) с таймером и видит сообщение - "Ссылка будет доступна через: N секунд" (таймер настраивается в админке модуля). После окончания таймера автоматически происходит переход по ссылке. Нужна помощь PHP специалистов, чтобы немного изменить "выдачу ссылки", конкретнее: Нужно чтобы после окончания таймера ссылка открывалось в новом окне, а вместо страницы с таймером (прелендинга) чтобы открывалось другая ссылка которую я поставлю. Исходник скрипта: Dude Smart Leech Насколько я понимаю, за переход ссылки отвечают 2 файла и OUT страница. leech.php Код: <?php if(!defined('DATALIFEENGINE')) { die("Hacking attempt!"); } define("DUDE_SMART_LEECH_START", microtime(true)); $_dude_config = array_filter((array)@unserialize(file_get_contents(dirname(__FILE__)."/../cfg/leech.dat"))); $groupID = $user_group[$member_id['user_group']]['id']; // [[ stupid dle algoritms hack $content = ob_get_clean(); ob_start(); if(!@$_dude_config['debug']) { $errlevel = error_reporting(0); } if($_dude_config['gopage'] && $_dude_config['gopage_url']) { define("DUDE_OUT_PAGE_URL", "/".ltrim($_dude_config['gopage_url'], "/")); } else { define("DUDE_OUT_PAGE_URL", "/engine/dude/index/leech_out.php"); } preg_match_all('#\[forceleech\](.*?)\[/forceleech\]#ism',$content,$forceleech, PREG_SET_ORDER); foreach($forceleech as $i=>$html) { $replace = preg_replace('#\[\s*/?\s*noleech\s*\]#ism','', $html[1]); $content = str_replace($html[0], $replace, $content); } preg_match_all('#\[noleech\](.*?)\[/noleech\]#ism',$content,$noleech, PREG_SET_ORDER); foreach($noleech as $i=>$html) { $uniqid = "*".uniqid("noleech_")."*"; $noleech[$i] = array($uniqid, $html[1]); $content = str_replace($html[0], $uniqid, $content); } if($_dude_config['enable'] && in_array($groupID, (array)@$_dude_config['groups']) !== false) { $content = dude_smart_leech($content); } foreach($noleech as $nl) { $content = str_replace($nl[0], $nl[1], $content); } $content .= "<!-- dude Smart Leech time: ".sprintf("%f",(microtime(true) - DUDE_SMART_LEECH_START) * 1000)." msec -->"; echo $content; if(!@$_dude_config['debug']) { error_reporting($errlevel); } // stupid dle algoritms hack ]] function dude_smart_leech($content) { global $_dude_config; $content = str_replace("{dude_leech}", "<a href=\"https://gyzeev.ru\">dude Smart Leech</a>", $content); $tags = array(); $links = array(); if($_dude_config['rewrite_urls']) { $tags[] = "a"; $links[] = "href"; } if($_dude_config['rewrite_imgs']) { $tags[] = "img"; $links[] = "src"; } if(!$tags) { return $content; } $tags = "(".join("|", $tags).")"; $links = "(?:".join("|", $links).")"; if($_dude_config['use_list_black'] && $_dude_config['rewrite_urls']) { $content = preg_replace_callback("#(<a[^>]+?href\s*=\s*(\"|'))(https?://.+?)\\2(.*?>)(.*?)</a\s*>#ism", 'dude_smart_leech_rewrite_urls_black', $content); } $content = preg_replace_callback("#(<{$tags}[^>]+?$links\s*=\s*(\"|'))(https?://.+?)\\3(.*?>)#ism", 'dude_smart_leech_rewrite_urls', $content); return $content; } function dude_smart_leech_rewrite_urls($m) { global $config; static $domain, $tags, $baseurl, $baseurllen; $m[4] = htmlspecialchars_decode($m[4]); if(!$domain) { $domain = strtolower($_SERVER['HTTP_HOST']); if(substr($domain, 0,4) == "www.") { $domain = substr($domain, 4); } $tags = array(); $tags['a'] = "a"; $tags['img'] = "i"; $baseurl = rtrim($config['http_home_url'],"/")."/"; $baseurllen = strlen($baseurl); } global $_dude_config; if(trim($_dude_config['noreplace_flag']) && strpos($m[0], $_dude_config['noreplace_flag'])) { return $m[0]; } $urlinfo = parse_url($m[4]); $host = strtolower($urlinfo['host']); if(substr($host, 0,4) == "www.") { $host = substr($host,4); } if(strpos($m[0], 'onclick="return hs.expand(this)"')) { return $m[0]; } if($host == $domain || $host == "gyzeev.ru") { if($_dude_config['getleeched']) { $path = basename($urlinfo['path']); if($path == "go.php") { parse_str($urlinfo['query'], $params); $url = $params['url']; $url = @base64_decode ( $url ); $url = str_replace ( "&", "&", $url ); $m[4] = $url; $urlinfo = parse_url($url); $host = strtolower($urlinfo['host']); if(substr($host, 0,4) == "www.") { $host = substr($host,4); } } else { return $m[0]; } } else { return $m[0]; } } if($_dude_config['use_list_white'] && @in_array($host, $_dude_config['list_white'])) { return $m[0]; } $_url = $_dude_config['encrypt'] ? base64_encode($m[4]) : $m[4]; $url = rtrim($config['http_home_url'],"/").DUDE_OUT_PAGE_URL; $url .= "?".urlencode($tags[$m[2]].":".$_url); if($_dude_config['usenoindex'] || $_dude_config['usenofollow']) { $rel = array(); if($_dude_config['usenoindex']) { $rel[] = 'noindex'; } if($_dude_config['usenofollow']) { $rel[] = 'nofollow'; } $rel = " rel=\"".join(",", $rel)."\" "; $m[5] = $rel.$m[5]; } $m = $m[1].$url.$m[3].$m[5]; return $_dude_config['usenoindex'] ? '<noindex>'.$m.'</noindex>' : $m; } function dude_smart_leech_rewrite_urls_black($m) { global $_dude_config; $urlinfo = parse_url($m[3]); $host = strtolower($urlinfo['host']); if(substr($host, 0,4) == "www.") { $host = substr($host,4); } if(@in_array($host, $_dude_config['list_black'])) { return $m[5]; } return $m[0]; } if (!function_exists('htmlspecialchars_decode') ) { function htmlspecialchars_decode($text) { return strtr($text, array_flip(get_html_translation_table(HTML_SPECIALCHARS))); } } | leech_out.php Код: <?php @session_start(); $config = array_filter((array)@unserialize(file_get_contents(dirname(__FILE__)."/../cfg/leech.dat"))); if(!@$config['debug']) { $errlevel = error_reporting(0); } list($type, $url) = explode(":",urldecode($_SERVER['QUERY_STRING']), 2); $url = $config['encrypt'] ? base64_decode($url) : $url; switch($type) { case "a": if($config['teaser']) { $root = "http://".$_SERVER['HTTP_HOST']."/"; $host = $_SERVER['HTTP_HOST']; $refresh = ''; $timer = ''; if($config['refresh']) { $refresh = '<meta http-equiv="refresh" content="'.(int)$config['refresh_delay']; $refresh .= '; url='.htmlspecialchars($url).'" />'; $timer = '<span id="timer">'.(int)$config['refresh_delay'].'</span>'; $timer .= '<script type="text/javascript"> window.onload = function () { var timer = document.getElementById("timer"); var delay = '.(int)$config['refresh_delay'].'; var location = "'.addslashes($url).'"; var interval = setInterval(function () { if(delay) { delay--; } timer.innerHTML = delay; if(delay <= 0) { clearInterval(interval); window.location.href=location; } }, 1000); }; </script>'; } if($config['teaser_use_php']) { require_once dirname(__FILE__).'/../cfg/leech_teaser.php'; } else { $html = file_get_contents(dirname(__FILE__).'/../cfg/leech_teaser.html'); $replace = array( "{url}" => $url, "{host}" => $host, "{root}" => $root, ); $replace = array_map("htmlspecialchars",$replace); $replace["{refresh}"] = $refresh; $replace["{timer}"] = $timer; echo str_replace(array_keys($replace), $replace, $html); } } else { header("HTTP/1.1 301 Moved Permanently"); header("Location: $url"); } break; case "i": header("HTTP/1.1 301 Moved Permanently"); header("Location: $url"); break; default: header("HTTP/1.1 301 Moved Permanently"); header("Location: /"); break; } die(); | Для OUT страницы используется HTML версия: Доступны переменные — {url}, {host}, {root}, {refresh}, {timer} Код: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> {refresh} <title>Переход по внешней ссылке</title> </head> <body style="padding:20px 180px; font-size:12px; font-family:Tahoma; line-height:200%"> <h2>Переход по внешней ссылке</h2> <p> Вы покидаете сайт <a href="{root}">{host}</a> по внешней ссылке <b>{url}</b>, предоставленной на одной из страниц нашего проекта. </p> <p> Администрация {host} не несет ответственности за содержимое сайта <b></b> и настоятельно рекомендует <b>не указывать</b> никаких своих данных, имеющих отношение к {host} (особенно <b>e-mail</b>, <b>пароль</b> и <b>cookies</b>), на сторонних сайтах. </p> <p> Кроме того, сайт <b>{url}</b> может содержать вирусы, трояны и другие вредоносные программы, опасные для Вашего компьютера. </p> <p> Если у Вас нет серьезных оснований доверять этому сайту, лучше всего на него не переходить, даже если Вы якобы получили эту ссылку от одного из Ваших друзей. </p> <p> Если Вы еще не передумали, нажмите на <a href="{url}" id="page">{url}</a>. </p> <p> Если Вы не хотите рисковать безопасностью Вашего аккаунта и компьютера, нажмите <a href="javascript:window.history.back()">Отмена</a>, иначе вы будете перемещены через <b>{timer} секунд</b> </p> <div style="height: 1px; background: #eee;margin-top: 80px"> </div> <p> <a style="color: blue">Ваша реклама</a> </p> </body> </html> | Буду очень признателен, если поможете решить задачу. Думаю для PHP специалистов кто разбирается в коде это совсем простая задача. Заранее большое спасибо. |