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

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


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

До обновления на ДЛЕ на версию 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
Ссылка на сообщение
Поделиться на других сайтах
11 минут назад, crafic сказал:

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

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

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

Ссылка на сообщение
Поделиться на других сайтах
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
Ссылка на сообщение
Поделиться на других сайтах
  • 4 месяца спустя...

Здравствуйте!

Помогите поправить код довольно не плохого и не большого модуля под актуальную версию 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&amp;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&amp;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;

?>

 

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

Здравствуйте!

Помогите поправить код довольно не плохого и не большого модуля под актуальную версию PHP 8.1. Автора и его сайт уже не найти. Модуль называется - last comments modul v 1.0 . Модуль насколько я помню был создан ещё для версии DLE 10.6. 

Так вроде бы все что делает этот модуль можно вывести стандартным глобальным тегом customcomments Или я не прав?

Ссылка на сообщение
Поделиться на других сайтах
19.03.2023 в 15:10, dds сказал:

Так вроде бы все что делает этот модуль можно вывести стандартным глобальным тегом customcomments Или я не прав?

Этот модуль выводит текст комментария красивым всплывающим хинтом. Как это можно вывести глобальным тегом customcomments ?

Ссылка на сообщение
Поделиться на других сайтах
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\" />";

 

 

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

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

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

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

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

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

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

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

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

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