Nektov 58 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 (изменено) До обновления на ДЛЕ на версию 15.3, соответственно поднятия версии PHP до 8 прекрасно работал код <? if ((isset($_GET['link'])) AND (preg_match( '/^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}'.'((:[0-9]{1,5})?\/.*)?$/i' ,$_GET['link']))) { header("Location: ".$_GET['link'].""); } ?> Суть кода в том, что все ссылки отправляемые через название_файла.php/link=.... открывались, но не считались не индексировались как внешние. Сейчас редирект не работает, открывается новая страница и все. Помогите, кто знает, в чем причина? Да. Может можно штатными средствами ДЛЕ пустить ссылки в шаблонах через личь? Изменено 9 ноября 2022 пользователем Nektov Цитата Ссылка на сообщение Поделиться на других сайтах
crafic 19 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 15 minutes ago, Nektov said: Сейчас редирект не работает, открывается новая страница и все новая это какая? сайт дле или link? Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 58 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 Автор 11 минут назад, crafic сказал: новая это какая? сайт дле или link? Новая, это пустая, без выполнения переадресации. Вот пример работы li.php?link= После нажатия на ссылку должна открываться страница https://creativecommons.org/licenses/by-nc-sa/4.0/, а открывается пустая. Цитата Ссылка на сообщение Поделиться на других сайтах
crafic 19 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 какая регулярка так и работает https://regex101.com/r/gSPwFN/1 она не ищет эту ссылку Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 58 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 Автор 43 минуты назад, crafic сказал: какая регулярка так и работает То есть? Цитата Ссылка на сообщение Поделиться на других сайтах
crafic 19 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 <? if ((isset($_GET['link'])) AND (preg_match( '#^https?://[\S]+#i' ,$_GET['link']))) { header("Location: ".$_GET['link'].""); } else header("Location: https://google.com"); ?> как то так 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 58 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 Автор 8 минут назад, crafic сказал: else header("Location: https://google.com"); Я так понимаю здесь каждый раз писать адрес который нужно пустить через скрипт? Цитата Ссылка на сообщение Поделиться на других сайтах
crafic 19 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 2 minutes ago, Nektov said: Я так понимаю здесь каждый раз писать адрес который нужно пустить через скрипт? нет. это адрес куда послать нах* если неверная ссылка Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 58 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 Автор 3 минуты назад, crafic сказал: нет. это адрес куда послать нах* если неверная ссылка Не работает. Тот же результат. Цитата Ссылка на сообщение Поделиться на других сайтах
crafic 19 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 2 minutes ago, Nektov said: Не работает. Тот же результат. ну если php отдает как текстовый файл то конечно не будет https://skr.sh/sGpJjkXxU0a Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 58 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 Автор 1 минуту назад, crafic сказал: ну если php отдает как текстовый файл то конечно не будет https://skr.sh/sGpJjkXxU0a Прикольно. Права на файл 755. Почему он может не выполнятся? Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 5 797 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 1 час назад, Nektov сказал: <? Вместо этого нужно начинать PHP код с: <?php Просто вы неверно пишите PHP, в настройках PHP интерпретатора новой версии не включили поддержку коротких тегов https://www.php.net/manual/en/ini.core.php#ini.short-open-tag 1 Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 58 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 (изменено) Автор С позволения crafic и celsoft приведу полный код: <?php if ((isset($_GET['link'])) AND (preg_match( '#^https?://[\S]+#i' ,$_GET['link']))) { header("Location: ".$_GET['link'].""); } else header("Location: https://google.com"); ?> Вместо https://google.com можно указать любой другой адрес. Так тоже работает: <?php if ((isset($_GET['link'])) AND (preg_match( '/^(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}'.'((:[0-9]{1,5})?\/.*)?$/i' ,$_GET['link']))) { header("Location: ".$_GET['link'].""); } ?> Изменено 9 ноября 2022 пользователем Nektov Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.