HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Закрытая тема
 
Опции темы Поиск в этой теме Опции просмотра

Помогите с php скриптом.
  #1  
Старый 10.11.2009, 17:25
tshift
Участник форума
Регистрация: 27.04.2009
Сообщений: 120
С нами: 8968623

Репутация: 27
По умолчанию Помогите с php скриптом.

Нужен скрипт на пхп,который работает так:
1)Передается параметр типа site.ru/script.php?adr=antichat.ru
2)Через N идет редирект на сайт antichat.ru
Заранее благодарю,+ гарантирую!
 

  #2  
Старый 10.11.2009, 17:31
L I G A
Постоянный
Регистрация: 27.07.2008
Сообщений: 614
С нами: 9362947

Репутация: 1196


По умолчанию

самый примитивный вариант (до вывода):
PHP код:
if($_GET['adr']){
echo 
header('Location: ' $_GET['adr']) ;
exit();

если N - это время,то sleep(сек); перед редиректом.
 

  #3  
Старый 10.11.2009, 23:45
(Dm)
Reservists Of Antichat - Level 6
Регистрация: 08.04.2008
Сообщений: 286
С нами: 9521666

Репутация: 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)) 
Более правильный вариант:
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..
 

  #4  
Старый 11.11.2009, 00:05
PaCo
Постоянный
Регистрация: 06.02.2008
Сообщений: 494
С нами: 9610769

Репутация: 380
По умолчанию

/[^a-z\.]/i - как я понимаю в названиях сайтов цифр и тире быть не может? Ну а если там будет еще и не морду сайта, а на какую то его страницу с GET параметрами - index.php?fu=sdgfhg
 

  #5  
Старый 11.11.2009, 00:12
(Dm)
Reservists Of Antichat - Level 6
Регистрация: 08.04.2008
Сообщений: 286
С нами: 9521666

Репутация: 1695
По умолчанию

PaCo правильно говоришь, исправил...
__________________
Cервер cs 1.6
cs.antichat.net:27015

Последний раз редактировалось (Dm); 11.11.2009 в 00:20..
 

  #6  
Старый 11.11.2009, 00:32
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
С нами: 9410786

Репутация: 2731


По умолчанию

(Dm), и твой вариант не оптимален - зачем скрипту простаивать 5 секунд? Пользователь подумает, что скрипт завис... Кстати, ты используешь регулярные выражения, а они - очень медленные. Вот более-менее оптимальный вариант:
PHP код:
<?php

if (isset($_GET['addr']))
{
    
$url 'http://' htmlspecialchars($_GET['addr']);
    
$n 5;
    if (
parse_url($urlPHP_URL_HOST))
    {
        echo 
'В течении '$n .' секунд вы будете перенаправлены на страницу ' $url '...
<script>function redirect() 
{
  document.location = "' 
$url '";
}
setTimeout(redirect, ' 
. ($n 1000) . ')
</script>'
;
    } else
    {
        echo 
'Неправильная ссылка!';
    }
}

?>
 

  #7  
Старый 11.11.2009, 00:35
(Dm)
Reservists Of Antichat - Level 6
Регистрация: 08.04.2008
Сообщений: 286
С нами: 9521666

Репутация: 1695
По умолчанию

Твой вариант как альтернатива. а что если javascript отключен !?
По поводу регулярок... я их использую и буду использовать...
По поводу скорости выполнения, если такой умный ответь на вопрос, насколько быстро выполняются функции
Цитата:
htmlspecialchars
parse_url
??? быстрее ли они одного простого регулярного выражения?
__________________
Cервер cs 1.6
cs.antichat.net:27015

Последний раз редактировалось (Dm); 11.11.2009 в 00:52..
 

  #8  
Старый 11.11.2009, 01:01
mailbrush
Познавший АНТИЧАТ
Регистрация: 24.06.2008
Сообщений: 1,996
С нами: 9410786

Репутация: 2731


По умолчанию

Цитата:
Сообщение от (Dm)  
По поводу скорости выполнения, если такой умный ответь на вопрос, насколько быстро выполняются функции

??? быстрее ли они одного простого регулярного выражения?
Так, стоп, а обзывать меня зачем? Я что-то сказал плохое в твою сторону? Я всего лишь критиковал код. А насчет скорости - сейчас измерю, чей код быстрее выполнится.
 

  #9  
Старый 11.11.2009, 01:03
(Dm)
Reservists Of Antichat - Level 6
Регистрация: 08.04.2008
Сообщений: 286
С нами: 9521666

Репутация: 1695
По умолчанию

Цитата:
Сообщение от mailbrush  
Так, стоп, а обзывать меня зачем? Я что-то сказал плохое в твою сторону? Я всего лишь критиковал код. А насчет скорости - сейчас измерю, чей код быстрее выполнится.
Кого я обзывал? Это комплимент)
__________________
Cервер cs 1.6
cs.antichat.net:27015
 

  #10  
Старый 11.11.2009, 00:36
[QwyZ]
Banned
Регистрация: 07.07.2009
Сообщений: 109
С нами: 8866532

Репутация: 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
}
?>
 
Закрытая тема



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PSalm69 Избранное 273 13.02.2016 01:24
Books PHP FRAGNATIC PHP 186 21.02.2010 02:41



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.