Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

10.11.2009, 17:25
|
|
Участник форума
Регистрация: 27.04.2009
Сообщений: 120
Провел на форуме: 496480
Репутация:
27
|
|
Помогите с php скриптом.
Нужен скрипт на пхп,который работает так:
1)Передается параметр типа site.ru/script.php?adr=antichat.ru
2)Через N идет редирект на сайт antichat.ru
Заранее благодарю,+ гарантирую!
|
|
|

10.11.2009, 17:31
|
|
Постоянный
Регистрация: 27.07.2008
Сообщений: 614
Провел на форуме: 4532332
Репутация:
1196
|
|
самый примитивный вариант (до вывода):
PHP код:
if($_GET['adr']){
echo header('Location: ' . $_GET['adr']) ;
exit();
}
если N - это время,то sleep(сек); перед редиректом.
|
|
|

10.11.2009, 23:45
|
|
Reservists Of Antichat - Level 6
Регистрация: 08.04.2008
Сообщений: 286
Провел на форуме: 2375131
Репутация:
1695
|
|
Сообщение от L I G A
самый примитивный вариант (до вывода):
PHP код:
if($_GET['adr']){
echo header('Location: ' . $_GET['adr']) ;
exit();
}
если N - это время,то sleep(сек); перед редиректом.
В твоем коде как бы раскрытие пути, при передачи новой строки в параметре _GET['adr'], имеем раскрытие пути. И зачем там echo !?
пример:
http://site.ru/script.php?adr=xe%0Ak%0A
получим:
Warning: Header may not contain more than a single header, new line detected. in /path/script.php
И вообще хорошо бы использовать функцию 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;
?>
__________________
Cервер cs 1.6
cs.antichat.net:27015
Последний раз редактировалось (Dm); 11.11.2009 в 00:57..
|
|
|

11.11.2009, 00:05
|
|
Постоянный
Регистрация: 06.02.2008
Сообщений: 494
Провел на форуме: 1754802
Репутация:
380
|
|
/[^a-z\.]/i - как я понимаю в названиях сайтов цифр и тире быть не может? Ну а если там будет еще и не морду сайта, а на какую то его страницу с GET параметрами - index.php?fu=sdgfhg
|
|
|

11.11.2009, 00:12
|
|
Reservists Of Antichat - Level 6
Регистрация: 08.04.2008
Сообщений: 286
Провел на форуме: 2375131
Репутация:
1695
|
|
PaCo правильно говоришь, исправил...
__________________
Cервер cs 1.6
cs.antichat.net:27015
Последний раз редактировалось (Dm); 11.11.2009 в 00:20..
|
|
|

11.11.2009, 00:32
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
(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 'Неправильная ссылка!';
}
}
?>
|
|
|

11.11.2009, 00:35
|
|
Reservists Of Antichat - Level 6
Регистрация: 08.04.2008
Сообщений: 286
Провел на форуме: 2375131
Репутация:
1695
|
|
Твой вариант как альтернатива. а что если javascript отключен !?
По поводу регулярок... я их использую и буду использовать...
По поводу скорости выполнения, если такой умный ответь на вопрос, насколько быстро выполняются функции
htmlspecialchars
parse_url
??? быстрее ли они одного простого регулярного выражения?
__________________
Cервер cs 1.6
cs.antichat.net:27015
Последний раз редактировалось (Dm); 11.11.2009 в 00:52..
|
|
|

11.11.2009, 00:36
|
|
Banned
Регистрация: 07.07.2009
Сообщений: 109
Провел на форуме: 766927
Репутация:
67
|
|
<?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
}
?>
|
|
|

11.11.2009, 00:42
|
|
Постоянный
Регистрация: 08.11.2008
Сообщений: 498
Провел на форуме: 2603363
Репутация:
278
|
|
[QwyZ]
такой бред написал, мне аж страшно.
Тогда уже так:
PHP код:
<?php
if (isset($_GET['adr'])){
@header("Location: $_GET['adr']") or die("<script>location.href=\"".htmlspecialchars($_GET['adr'])."\"</script>");
}
?>
|
|
|

11.11.2009, 01:01
|
|
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
Провел на форуме: 6075534
Репутация:
2731
|
|
Сообщение от (Dm)
По поводу скорости выполнения, если такой умный ответь на вопрос, насколько быстро выполняются функции
??? быстрее ли они одного простого регулярного выражения?
Так, стоп, а обзывать меня зачем? Я что-то сказал плохое в твою сторону? Я всего лишь критиковал код. А насчет скорости - сейчас измерю, чей код быстрее выполнится.
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|