Нужен скрипт на пхп,который работает так: 1)Передается параметр типа site.ru/script.php?adr=antichat.ru 2)Через N идет редирект на сайт antichat.ru Заранее благодарю,+ гарантирую!
самый примитивный вариант (до вывода): PHP: if($_GET['adr']){ echo header('Location: ' . $_GET['adr']) ; exit(); } если N - это время,то sleep(сек); перед редиректом.
В твоем коде как бы раскрытие пути, при передачи новой строки в параметре _GET['adr'], имеем раскрытие пути. И зачем там echo !? пример: получим: И вообще хорошо бы использовать функцию empty() PHP: if (!empty($_GET['adr'])) Более правильный вариант: PHP: <?php if (!empty($_GET['adr']) && !@preg_match('/[\r\n]/', $_GET['adr'])) { echo '<h1>перенаправление</h1>'; sleep(5); header('Location: http://'.$_GET['adr']); } exit; ?>
/[^a-z\.]/i - как я понимаю в названиях сайтов цифр и тире быть не может? Ну а если там будет еще и не морду сайта, а на какую то его страницу с GET параметрами - index.php?fu=sdgfhg
(Dm), и твой вариант не оптимален - зачем скрипту простаивать 5 секунд? Пользователь подумает, что скрипт завис... Кстати, ты используешь регулярные выражения, а они - очень медленные. Вот более-менее оптимальный вариант: PHP: <?php if (isset($_GET['addr'])) { $url = 'http://' . htmlspecialchars($_GET['addr']); $n = 5; if (parse_url($url, PHP_URL_HOST)) { echo 'В течении '. $n .' секунд вы будете перенаправлены на страницу ' . $url . '... <script>function redirect() { document.location = "' . $url . '"; } setTimeout(redirect, ' . ($n * 1000) . ') </script>'; } else { echo 'Неправильная ссылка!'; } } ?>
Твой вариант как альтернатива. а что если javascript отключен !? По поводу регулярок... я их использую и буду использовать... По поводу скорости выполнения, если такой умный ответь на вопрос, насколько быстро выполняются функции ??? быстрее ли они одного простого регулярного выражения?
<?php if (isset($_GET['adr'])){ header("Location: $_GET['adr']"); echo("<script>location.href=\"".htmlspecialchars($_GET['adr'])."\"</script>"); //tak na vsyakii sluchai esli error v php } ?>
[QwyZ] такой бред написал, мне аж страшно. Тогда уже так: PHP: <?php if (isset($_GET['adr'])){ @header("Location: $_GET['adr']") or die("<script>location.href=\"".htmlspecialchars($_GET['adr'])."\"</script>"); } ?>
Так, стоп, а обзывать меня зачем? Я что-то сказал плохое в твою сторону? Я всего лишь критиковал код. А насчет скорости - сейчас измерю, чей код быстрее выполнится.
Извени, но "такой умный" я считаю оскарблением. Результаты на моем процессоре: Мой скрипт: Code: Страница сгенерирована за 0.000082 секунд ! Страница сгенерирована за 0.000083 секунд ! Страница сгенерирована за 0.000081 секунд ! Страница сгенерирована за 0.000085 секунд ! Страница сгенерирована за 0.000083 секунд ! Страница сгенерирована за 0.000080 секунд ! Твой скрипт (без exit): Code: Страница сгенерирована за 0.000085 секунд ! Страница сгенерирована за 0.000089 секунд ! Страница сгенерирована за 0.000084 секунд ! Страница сгенерирована за 0.000086 секунд ! Страница сгенерирована за 0.000088 секунд ! Страница сгенерирована за 0.000085 секунд ! Как видишь, использование регулярки медленнее, чем двух стандартных ф-ций. Хоть это и незаметно человеку, но очень хорошо заметно компьютеру. ЗЫ: измеряю так: PHP: <?php $mtime = microtime(); $mtime = explode(" ",$mtime); $mtime = $mtime[1] + $mtime[0]; $tstart = $mtime; /*код*/ $mtime = microtime(); $mtime = explode(" ",$mtime); $mtime = $mtime[1] + $mtime[0]; $tend = $mtime; $totaltime = ($tend - $tstart); printf ("Страница сгенерирована за %f секунд !", $totaltime); ?>
На чуть-чуть, но быстрее Кстати, мне нравятся упрямые люди, потому что я сам такой - не поверю, пока не докажут