Zeg
robert
mastersound
Приведите ссылки на страницы с теми сообщениями, где редирект не срабатывает.
121. yura3d - 19 февраля 2010 — 10:42 - перейти к сообщению
122. lisiycat - 19 февраля 2010 — 13:06 - перейти к сообщению
yura3d пишет:
Приведите ссылки на страницы с теми сообщениями, где редирект не срабатывает.
У меня тоже заметил только на одной ссылке такую проблему
Вот она эта ссылка http://charka.org.ua/forum/topic...84803#1266484803
Остальные работают (понятное дело, что не хватит и дня, чтоб совсем все проверить...но некоторые просмотрел)
123. - 19 февраля 2010 — 16:15 - перейти к сообщению
yura3d, верну обратно вечером скрипт, набросю ссылок.
Например не работал редирект на http://fit-media.com и пр. Я несколько разных ссылок "тыкал", получал просто пустой экран. Аналогично было с предыдущей версий файла rd.php.
Например не работал редирект на http://fit-media.com и пр. Я несколько разных ссылок "тыкал", получал просто пустой экран. Аналогично было с предыдущей версий файла rd.php.
124. - 19 февраля 2010 — 23:54 - перейти к сообщению
Провел тестирование. Вернул скрипт как есть. Ткнул ссылки отсюда такие:
http://be.wikipedia.org/wiki/Рака_Бася
и
http://www.pogoda.by/315/mapGidro.html.
Редирект сработал в обоих случаях, но в первом кириллица была "переколбашена", т.е. java-скрипт не отработал.
Потом взял ссылку из подписи профиля на http://fit-media.com. Она не сработала, значит сработал die. Подправил "регулярку", добавил знак "-", т.к. его не было:
Редирект заработал.
Следовательно, осталось запустить кириллицу.
(Добавление)
Вообще, надо в регуляроное выражение добавить и другие символы, как минимум "?", "&", "=", "~". ИМХО.
http://be.wikipedia.org/wiki/Рака_Бася
и
http://www.pogoda.by/315/mapGidro.html.
Редирект сработал в обоих случаях, но в первом кириллица была "переколбашена", т.е. java-скрипт не отработал.
Потом взял ссылку из подписи профиля на http://fit-media.com. Она не сработала, значит сработал die. Подправил "регулярку", добавил знак "-", т.к. его не было:
CODE:
if (!preg_match('#^(http|https|ftp)%3A%2F%2([a-zA-Z0-9\.%\+\-_]+)$#is', urlencode($_SERVER['QUERY_STRING'])))
Редирект заработал.
Следовательно, осталось запустить кириллицу.
(Добавление)
Вообще, надо в регуляроное выражение добавить и другие символы, как минимум "?", "&", "=", "~". ИМХО.
125. altjo - 21 февраля 2010 — 12:29 - перейти к сообщению
а
CODE:
не покатит? ведь нужно избавится только от html-тегов, как я понимаю...
htmlspecialchars($_SERVER['QUERY_STRING'])
126. yura3d - 21 февраля 2010 — 19:32 - перейти к сообщению
altjo пишет:
не покатит? ведь нужно избавится только от html-тегов, как я понимаю...
Не совсем, т.к. в некоторых случаях можно сформировать XSS и без управляющих html-символов, например:
CODE:
alert(document.cookie)
Конечно в примере выше я не привёл непосредственно то, что называется XSS (чтобы не подавать разного рода школьнегам-"хакерам" пищу для размышлений), но сформировать его можно без проблем
Обновил прикреплённый файл rd.php (обновлённая версия уже работает и на этом форуме, так что проверяйте). Преимущество новой версии - однозначно (согласно документации PHP) определён набор символов, входящих в адрес URL и не подлежащих URL-кодированию. Так что дописывать туда дополнительные символы, как предлагал в своём предыдущем сообщении Zeg, больше не понадобится. Недостаток - убрал поддержку якорей у ссылок, которая была добавлена в предыдущей версии. К сожелению, тут от меня мало что зависело, разработчики браузеров хотели "класть" на стандарты и в результате из трёх протестированных мною браузеров (IE6, Opera 9.52, Firefox 3.0.x) каждый вытворяет с этими якорями всё, что ему заблагорассудится - IE6 обрабатывает их как юникод-строку, Opera 9.52 пытается юникод URL-кодировать, а Firefox юникод-строку интерпретирует только в однобайтной кодировке. И я думаю, в других версиях этих и других браузеров похожая ситуация.
Кому-нибудь поддержка этих якорей вообще нужна? Просто думаю, стоит ли тратить время на выравнивание этих несоответствий между разными браузерами
127. lisiycat - 21 февраля 2010 — 19:51 - перейти к сообщению
yura3d пишет:
Обновил прикреплённый файл rd.php (обновлённая версия уже работает и на этом форуме, так что проверяйте).
Отлично все. Работает! Спасибо!
yura3d пишет:
Кому-нибудь поддержка этих якорей вообще нужна? Просто думаю, стоит ли тратить время на выравнивание этих несоответствий между разными браузерами
ИМХО. Не нужно это.
128. electron - 21 февраля 2010 — 20:06 - перейти к сообщению
у меня опять-таки редирект работает если только
оставляю. если добавляю еще
то редирект работает напрямую, без открытия окна предупреждения о переходе по ссылке
CODE:
<?php
if (!preg_match('#^(http|https|ftp)%3A%2F%2(['.chr(33).'-'.chr(127).']+)$#is', urlencode($_SERVER['QUERY_STRING'])))
die;
?>
if (!preg_match('#^(http|https|ftp)%3A%2F%2(['.chr(33).'-'.chr(127).']+)$#is', urlencode($_SERVER['QUERY_STRING'])))
die;
?>
оставляю. если добавляю еще
CODE:
<script language="JavaScript" type="text/javascript">
document.location.href = '<?php echo urldecode($_SERVER['QUERY_STRING']); ?>';
</script>
document.location.href = '<?php echo urldecode($_SERVER['QUERY_STRING']); ?>';
</script>
то редирект работает напрямую, без открытия окна предупреждения о переходе по ссылке
129. yura3d - 21 февраля 2010 — 20:49 - перейти к сообщению
electron пишет:
то редирект работает напрямую, без открытия окна предупреждения о переходе по ссылке
Ну разумеется, это же была версия скрипта rd.php для непосредственного редиректа без вывода дополнительной информации. Чтобы выводить дополнительную информацию, скрипт редиректа нужно немного поправить. Вот примерный рабочий вариант:
Спойлер (Отобразить)
130. electron - 21 февраля 2010 — 21:08 - перейти к сообщению
спасибо, вот теперь все прекрасно работает
131. - 22 февраля 2010 — 20:42 - перейти к сообщению
Новая версия действительно работает. Якоря пока ни разу не пригодились. Пока вополне хватает этого варианта. Спасибо.
132. robert - 24 февраля 2010 — 13:23 - перейти к сообщению
Ну работать то новая версия работает, но есть один "косяк", после замены на этот новый rd.php, перестал правильно работать мод Подгрузка прикреплённых изображений на Ajax с "удаленными" изображениями. Они нормально показываются превью, но при увеличении не отображаются.
133. yura3d - 27 февраля 2010 — 14:00 - перейти к сообщению
robert пишет:
Ну работать то новая версия работает, но есть один "косяк", после замены на этот новый rd.php, перестал правильно работать мод Подгрузка прикреплённых изображений на Ajax с "удаленными" изображениями. Они нормально показываются превью, но при увеличении не отображаются.
К сожелению, переадресация на базе JavaScript (которая как раз и используется в последних версиях скрипта редиректа rd.php) с модом динамической подгрузки изображений на Ajax несовместима. Как вариант, возможно создать скрипт редиректа специально для внешних изображений с использованием классической (серверной) переадресации, которая как раз-таки совместима с тем модом.
Для этого откройте файл include/lib.php, найдите строку:
CODE:
$_imlink = $fm->out_redir.$imlink;
и замените её строкой:
CODE:
$_imlink = 'rd2.php?'.$imlink;
После чего в корневой папке форума разместите прикреплённый файл rd2.php. И не забудьте в файле robots.txt закрыть этот файл от индексации поисковыми системами
134. robert - 27 февраля 2010 — 14:42 - перейти к сообщению
Спасибо, Юра! Я так понял, то в данном случае нужно использовать и rd.php и rd2.php совместно? Мешать друг другу они не будут?
135. yura3d - 27 февраля 2010 — 14:50 - перейти к сообщению
robert пишет:
Спасибо, Юра! Я так понял, то в данном случае нужно использовать и rd.php и rd2.php совместно? Мешать друг другу они не будут?
Да, эти 2 скрипта редиректа использовать нужно совместно. Мешать друг другу они не будут. Просто в этих файлах реализованы 2 разных подхода к переадресации. Наиболее совместимый с разными видами ссылок работает на базе JavaScript (скрипт rd.php), однако, поскольку для мода подгрузки прикреплённых изображений на Ajax метод на базе JavaScript не подходит, для динамической подгрузки внешних изображений добавляется скрипт редиректа с классической (серверной) реализацией переадресации (rd2.php). И, как уже говорил ранее,
yura3d пишет:
не забудьте в файле robots.txt закрыть этот файл (rd2.php) от индексации поисковыми системами