Перейти к публикации

Помогите поправить \ разораться с кодом


Рекомендованные сообщения

До обновления на ДЛЕ на версию 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=.... открывались, но не считались не индексировались как внешние.

Сейчас редирект не работает, открывается новая страница и все.

Помогите, кто знает, в чем причина?

 

Да. Может можно штатными средствами ДЛЕ пустить ссылки в шаблонах через личь?

Изменено пользователем Nektov
Ссылка на сообщение
Поделиться на других сайтах
15 minutes ago, Nektov said:

Сейчас редирект не работает, открывается новая страница и все

новая это какая? сайт дле или link?

Ссылка на сообщение
Поделиться на других сайтах
11 минут назад, crafic сказал:

новая это какая? сайт дле или link?

Новая, это пустая, без выполнения переадресации.

Вот пример работы li.php?link= После нажатия на ссылку должна открываться страница https://creativecommons.org/licenses/by-nc-sa/4.0/, а открывается пустая.

Ссылка на сообщение
Поделиться на других сайтах
<?
if ((isset($_GET['link'])) AND (preg_match( '#^https?://[\S]+#i' ,$_GET['link'])))
{
header("Location: ".$_GET['link']."");
}
else header("Location: https://google.com");
?>

как то так

Ссылка на сообщение
Поделиться на других сайтах
8 минут назад, crafic сказал:


else header("Location: https://google.com");

 

Я так понимаю здесь каждый раз писать адрес который нужно пустить через скрипт?

Ссылка на сообщение
Поделиться на других сайтах
2 minutes ago, Nektov said:

Я так понимаю здесь каждый раз писать адрес который нужно пустить через скрипт?

нет. это адрес куда послать нах* если неверная ссылка

Ссылка на сообщение
Поделиться на других сайтах
3 минуты назад, crafic сказал:

нет. это адрес куда послать нах* если неверная ссылка

Не работает. Тот же результат.

Ссылка на сообщение
Поделиться на других сайтах
2 minutes ago, Nektov said:

Не работает. Тот же результат.

ну если php отдает как текстовый файл то конечно не будет

https://skr.sh/sGpJjkXxU0a

Ссылка на сообщение
Поделиться на других сайтах
1 минуту назад, crafic сказал:

ну если php отдает как текстовый файл то конечно не будет

https://skr.sh/sGpJjkXxU0a

Прикольно. Права на файл 755. Почему он может не выполнятся?

Ссылка на сообщение
Поделиться на других сайтах
1 час назад, Nektov сказал:

<?

Вместо этого нужно начинать PHP код с:

<?php

Просто вы неверно пишите PHP, в настройках PHP интерпретатора новой версии не включили поддержку коротких тегов https://www.php.net/manual/en/ini.core.php#ini.short-open-tag

Ссылка на сообщение
Поделиться на других сайтах

С позволения 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']."");
}
?>

 

Изменено пользователем Nektov
Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...