Предупреждение о переходе по внешней ссылке

Всем доброго времени суток!
Наверное многие из вас видели страницу перехода по внешней у ВКонтакте.
Сегодня мы попробуем сделать нечто подобное для своего сайта: Пользователь нажимает на ссылку, а ему открывается страница с предупреждением, что он покидает пределы Вашего сайта, редирект с которой на нажатую ссылку произойдёт через 10 секунд.
Это имеет примерно такой внешний вид:


Назовём файл нашего скрипта перехода «go.php». Поскольку мы будем его не для определённого сайта, то сделаем несколько переменных:
  • $title — Название Вашего сайта в именительном падеже
  • $titler — Название Вашего сайта в родительном падеже
  • $site — Полный адрес Вашего сайта

Ссылки, проходящие через go.php будут иметь вид http://you-site.ru/go.php?url=http://link.ru, поэтому адрес для редиректа нам нужно вытаскивать и GET-запроса.
Назовём переменную для адреса редиректа $url и получим её:
$url = isset($_REQUEST['url']) ? $_REQUEST['url'] : '';
if(preg_match('#(http?|ftp)://\S+[^\s.,>)\];\'\"!?]#i',$url)){
    sleep(0);
}

Как Вы могли заметить из скриншота, внизу страницы находится таймер, считающий от 10 до 0. Этот же таймер и сделает нам нужный редирект:
window.onload = function () {
var timer = document.getElementById("timer");
var delay = 10;
var location = "<?php echo $url; ?>";
var interval = setInterval(function () {
	if(delay)
	{
		delay--;
	}

	timer.innerHTML = delay;
	if(delay <= 0)
	{
		clearInterval(interval);
		window.location.href=location;
	}
		}, 1000);
	};

Осталось всё это сгруппировать и добавить оформление страницы, в итоге получится такой вид файла go.php:
<?php
// Настройка скрипта
$title = "Лучшая компания"; // Название Вашего сайта в именительном падеже
$titler = "Лучшей компании"; // Название Вашего сайта в родительном падеже
$site = "http://pingvi.org"; // Полный адрес Вашего сайта
// Конец настроек
// Для того, что бы сделать переход по ссылке на Вашем сайте через эту страницу,
// необходимо указать ссылку в виде http://you-site.ru/go.php?url=http://link.ru
// При этом данный скрипт должен находится в корне Вашего сайта.

// Получаем ссылку для редиректа
$url = isset($_REQUEST['url']) ? $_REQUEST['url'] : '';
if(preg_match('#(http?|ftp)://\S+[^\s.,>)\];\'\"!?]#i',$url)){
    sleep(0);
}
?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <title>Переход по внешней ссылке</title>
    </head>
    <body style="padding:20px 180px; font-size:12px; font-family:Tahoma; line-height:200%">
        <h2>Переход по внешней ссылке</h2>
        <p>
            Вы покидаете сайт <a href="<?php echo $site; ?>"><?php echo $title; ?></a>
            по внешней ссылке <b><?php echo $url; ?></b>.
        </p>
        <p>
            Мы не несем ответственности за содержимое сайта <?php echo $url; ?><b></b>
            и настоятельно рекомендует <b>не указывать</b>
            никаких своих личных данных на сторонних сайтах. 
        </p>
        <p>
            Кроме того, сайт <b><?php echo $url; ?></b>
            может содержать вирусы, трояны и другие вредоносные программы, опасные для Вашего компьютера. 
        </p>
        <p>
            Если у Вас нет серьезных оснований доверять этому сайту, лучше всего на него не переходить, даже если Вы якобы получили эту ссылку от одного из Ваших друзей. 
        </p>
        <p>
            Если Вы еще не передумали, нажмите на <a href="<?php echo $url; ?>" id="page"><?php echo $url; ?></a>. 
        </p>
        <p>
            Если Вы не хотите рисковать безопасностью компьютера, нажмите <a href="javascript:window.history.back()">отмена</a>, 
			иначе вы будете перемещены через <b><span id="timer">10</span><script type="text/javascript">
						window.onload = function () {
							var timer = document.getElementById("timer");
							var delay = 10;
							var location = "<?php echo $url; ?>";
							var interval = setInterval(function () {
								if(delay)
								{
									delay--;
								}

								timer.innerHTML = delay;
								if(delay <= 0)
								{
									clearInterval(interval);
									window.location.href=location;
								}
							}, 1000);
						};
					</script> секунд</b>
        </p>
        <h3><?php echo $title; ?> всегда заботится о вашей безопасности.</h3>
    </body>
</html>


P.S. Кроме того, этот скрипт поможет в поисковой оптимизации, т.к. у Вашего сайта теперь не будет прямых внешних ссылок.
Теги:
php, web-разработка, редирект

Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.