Nektov 59 Опубликовано: 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 32 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 15 minutes ago, Nektov said: Сейчас редирект не работает, открывается новая страница и все новая это какая? сайт дле или link? Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 Автор 11 минут назад, crafic сказал: новая это какая? сайт дле или link? Новая, это пустая, без выполнения переадресации. Вот пример работы li.php?link= После нажатия на ссылку должна открываться страница https://creativecommons.org/licenses/by-nc-sa/4.0/, а открывается пустая. Цитата Ссылка на сообщение Поделиться на других сайтах
crafic 32 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 какая регулярка так и работает https://regex101.com/r/gSPwFN/1 она не ищет эту ссылку Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 Автор 43 минуты назад, crafic сказал: какая регулярка так и работает То есть? Цитата Ссылка на сообщение Поделиться на других сайтах
crafic 32 Опубликовано: 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 59 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 Автор 8 минут назад, crafic сказал: else header("Location: https://google.com"); Я так понимаю здесь каждый раз писать адрес который нужно пустить через скрипт? Цитата Ссылка на сообщение Поделиться на других сайтах
crafic 32 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 2 minutes ago, Nektov said: Я так понимаю здесь каждый раз писать адрес который нужно пустить через скрипт? нет. это адрес куда послать нах* если неверная ссылка Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 Автор 3 минуты назад, crafic сказал: нет. это адрес куда послать нах* если неверная ссылка Не работает. Тот же результат. Цитата Ссылка на сообщение Поделиться на других сайтах
crafic 32 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 2 minutes ago, Nektov said: Не работает. Тот же результат. ну если php отдает как текстовый файл то конечно не будет https://skr.sh/sGpJjkXxU0a Цитата Ссылка на сообщение Поделиться на других сайтах
Nektov 59 Опубликовано: 9 ноября 2022 Рассказать Опубликовано: 9 ноября 2022 Автор 1 минуту назад, crafic сказал: ну если php отдает как текстовый файл то конечно не будет https://skr.sh/sGpJjkXxU0a Прикольно. Права на файл 755. Почему он может не выполнятся? Цитата Ссылка на сообщение Поделиться на других сайтах
celsoft 6 076 Опубликовано: 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 59 Опубликовано: 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 Цитата Ссылка на сообщение Поделиться на других сайтах
vilago 1 Опубликовано: 19 марта 2023 Рассказать Опубликовано: 19 марта 2023 (изменено) Здравствуйте! Помогите поправить код довольно не плохого и не большого модуля под актуальную версию PHP 8.1. Автора и его сайт уже не найти. Модуль называется - last comments modul v 1.0 . Модуль насколько я помню был создан ещё для версии DLE 10.6. Но вполне нормально работает и на версии 15.3 и PHP 7.6. На PHP 8.0 совсем не работает а в логах ошибки. Фото модуля - https://ibb.co/qr45FQj . Код не большой а в PHP я ноль. Модуль с файлами (может кому нужно) - https://disk.yandex.ru/d/Ui1iD28Qf6egVQ <?php if( ! defined( 'DATALIFEENGINE' ) ) { die( "Hacking attempt!" ); } $max_comm = ( is_numeric(trim($max_comm)) ) ? $max_comm : 6; $max_text = ( is_numeric(trim($max_text)) ) ? $max_text : 10000; $max_title = ( is_numeric(trim($max_title)) ) ? $max_title : 32; $groups_color = ( $groups_color ) ? $groups_color : 'group_1:FF0000,group_2:CC33CC,group_3:009900,group_4:3333FF,group_5:666666'; if( $stop_category ) $stop_category = "AND p.category NOT IN ( {$stop_category} )"; $config_hash = md5($max_comm.$max_text.$max_title.$groups_color.$stop_category); $is_change = false; if ($config['allow_cache'] != "yes") { $config['allow_cache'] = "yes"; $is_change = true;} $lastcomments = dle_cache( "news_comm_lastcomments_", $config['skin'].$config_hash ); if( $lastcomments === false ) { require_once ENGINE_DIR . '/classes/templates.class.php'; $tpl = new dle_template ( ); $tpl->dir = ENGINE_DIR . '/modules/lastcomments/'; define ( 'TEMPLATE_DIR', $tpl->dir ); $db->query( "SELECT c.post_id, c.date, c.user_id, c.is_register, c.text, c.autor, c.email, c.approve, p.id, p.date as newsdate, p.title, p.category, p.comm_num, p.alt_name, u.foto, u.user_group, u.user_id FROM " . PREFIX . "_comments as c, " . PREFIX . "_post as p, " . PREFIX . "_users as u WHERE p.id=c.post_id AND c.user_id = u.user_id AND c.approve = 1 {$stop_category} ORDER BY c.date DESC LIMIT 0, " . $max_comm ); $tpl->load_template ( 'skin.tpl' ); function lastcommentsDate($format, $time_add) { global $langdate, $config; $today = strtotime(date("Y-m-d.", time()+ ($config['date_adjust']*60))); if ($time_add > $today) return "Сегодня в " . date ("H:i:s", $time_add); elseif ($time_add > ($today - 86400)) return "Вчера в ". date ("H:i:s", $time_add); else return @strtr(@date($format, $time_add), $langdate); } while ( $row = $db->get_row() ) { //====================================================================== $on_page = FALSE; if($row['comm_num'] > $config['comm_nummers']) $on_page = 'page,1,'.ceil($row['comm_num'] / $config['comm_nummers']).','; if( $config['allow_alt_url'] == "yes" ) { if( $row['flag'] and $config['seo_type'] ) { if( $row['category'] and $config['seo_type'] == 2 ) { $full_link = $config['http_home_url'] . get_url( intval( $row['category'] ) ) . "/" .$on_page. $row['id'] . "-" . $row['alt_name'] . ".html"; } else { $full_link = $config['http_home_url'] .$on_page. $row['id'] . "-" . $row['alt_name'] . ".html"; } } else { $full_link = $config['http_home_url'] . get_url( intval( $row['category'] ) ) . "/" .$on_page. $row['id'] . "-" . $row['alt_name'] . ".html"; } } else { $full_link = $config['http_home_url'] . "index.php?newsid=" . $row['id']; } $full_link = $full_link; //====================================================================== if( dle_strlen( $row['text'], $config['charset'] ) > $max_text ) $text = dle_substr( $row['text'], 0, $max_text, $config['charset'] ) . " ..."; else $text = $row['text']; //====================================================================== if( dle_strlen( $row['title'], $config['charset'] ) > $max_title ) $title = dle_substr( $row['title'], 0, $max_title, $config['charset'] ) . " ..."; else $title = $row['title']; $title = stripslashes($title); //====================================================================== $color = stristr($groups_color, 'group_'.$row['user_group'].':' ); $color = reset(explode(',',$color)); $color = trim(str_replace('group_'.$row['user_group'].':','',$color)); if($row['is_register'] == 1){ if( $config['allow_alt_url'] == "yes" ) $go_page = $config['http_home_url'] . "user/" . urlencode( $row['autor'] ) . "/"; else $go_page = "$PHP_SELF?subaction=userinfo&user=" . urlencode( $row['autor'] ); $author = "<a onclick=\"ShowProfile('" . urlencode( $row['autor'] ) . "', '" . $go_page . "'); return false;\" href=\"" . $go_page . "\"><span style=\"color:#".$color."\">" . $row['autor'] . "</span> </a>"; }else{ $author = "<a href=\"mailto:".$row['email']."\"><span style=\"color:#".$color."\">".$row['autor']."</span></a>"; } //====================================================================== $row['foto'] = ($row['foto'] == '') ? 'templates/' . $config['skin'] . '/images/noavatar.png' : 'uploads/fotos/'.$row['foto']; if( $config['allow_alt_url'] == "yes" ) $user_url = $config['http_home_url'] . "user/" . urlencode( $row['autor'] ) . "/"; else $user_url = "$PHP_SELF?subaction=userinfo&user=" . urlencode( $row['autor'] ); if($row['is_register'] != 1) $user_url = 'mailto:'.$row['email']; $tpl->set ( '{hash}', md5($text.$author.$title) ); $tpl->set ( '{text}', $text ); $tpl->set ( '{date}', lastcommentsDate("j F Y",strtotime($row['date'])) ); $tpl->set ( '{foto}', $config['http_home_url'] . $row['foto'] ); $tpl->set ( '{user_url}', $user_url ); $tpl->set ( '{user_name}', $row['autor'] ); $tpl->set ( '{title}', $title ); $tpl->set ( '{author}', $author ); $tpl->set ( '{full_link}', $full_link ); $tpl->set ( '{THEME}', $config['http_home_url']."engine/modules/lastcomments" ); $tpl->compile ( 'skin' ); //====================================================================== } $db->free(); $tpl->clear(); $lastcomments = $tpl->result['skin']; if(!$lastcomments) $lastcomments = '<center><b>Нет комментариев</b></center>'; create_cache( "news_comm_lastcomments_", $lastcomments, $config['skin'].$config_hash ); } //====================================================================== if( $user_group[$member_id['user_group']]['allow_hide'] ) $lastcomments = preg_replace( "'\[hide\](.*?)\[/hide\]'si", "\\1", $lastcomments ); else $lastcomments = preg_replace ( "'\[hide\](.*?)\[/hide\]'si", "<div class=\"quote\">" . $lang['news_regus'] . "</div>", $lastcomments ); //====================================================================== echo "<script type=\"text/javascript\" src=\"{$config['http_home_url']}engine/modules/lastcomments/hint/show.js\"></script> <link rel=\"stylesheet\" type=\"text/css\" href=\"{$config['http_home_url']}engine/modules/lastcomments/style.css\" />"; echo '<div class="lastcomments" id="lastcomments"><ul>'.$lastcomments.'</ul></div>'; if ($is_change) $config['allow_cache'] = false; ?> Изменено 19 марта 2023 пользователем vilago Цитата Ссылка на сообщение Поделиться на других сайтах
dds 47 Опубликовано: 19 марта 2023 Рассказать Опубликовано: 19 марта 2023 9 часов назад, vilago сказал: Здравствуйте! Помогите поправить код довольно не плохого и не большого модуля под актуальную версию PHP 8.1. Автора и его сайт уже не найти. Модуль называется - last comments modul v 1.0 . Модуль насколько я помню был создан ещё для версии DLE 10.6. Так вроде бы все что делает этот модуль можно вывести стандартным глобальным тегом customcomments Или я не прав? Цитата Ссылка на сообщение Поделиться на других сайтах
vilago 1 Опубликовано: 22 марта 2023 Рассказать Опубликовано: 22 марта 2023 19.03.2023 в 15:10, dds сказал: Так вроде бы все что делает этот модуль можно вывести стандартным глобальным тегом customcomments Или я не прав? Этот модуль выводит текст комментария красивым всплывающим хинтом. Как это можно вывести глобальным тегом customcomments ? Цитата Ссылка на сообщение Поделиться на других сайтах
TeraMoune 56 Опубликовано: 22 марта 2023 Рассказать Опубликовано: 22 марта 2023 22 минуты назад, vilago сказал: Как это можно вывести глобальным тегом customcomments ? Соответствующая вёрстка и css правила, можно еще и на javascript реализовать. Собственно данный модуль как раз и несёт на своём горбу эти самые правила и js код. Скрытый текст echo "<script type=\"text/javascript\" src=\"{$config['http_home_url']}engine/modules/lastcomments/hint/show.js\"></script> <link rel=\"stylesheet\" type=\"text/css\" href=\"{$config['http_home_url']}engine/modules/lastcomments/style.css\" />"; Цитата Ссылка на сообщение Поделиться на других сайтах
Рекомендованные сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.