Перейти к содержанию

Ошибка при просмотре контента пользователя


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

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

Установлен Invision Community v4.3.4 NULLED, при просмотре контента пользователя который не разместил ни одного поста на форуме появляется ошибка "Сайт ***.ru выполнил переадресацию слишком много раз."

error1.thumb.png.f4caef48f6db2be5273614e80657824e.png

error.png.b36bf517d9cfc2b4f9deb22eeda8467c.png

error3.thumb.gif.9a0a1fe9d846e5911d17fdfd0b2a347d.gif

Плагины и приложения все отключал, не помогает. 

Может знает кто в чем проблема?

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

Увы не придумал ничего лучше размещения этого скрипта в index.php в самом верху.

if(strpos($_SERVER['REQUEST_URI'], '/content/'))
{
    ob_start();
    require_once 'init.php';
    $urlID = explode('-', explode("/", $_SERVER['REQUEST_URI'])[3])[0];
    $profile_IPS = \IPS\Member::load( $urlID );
    if($profile_IPS->member_posts <= 0)
    {
       $urlGo = 'https://site.ru/forum/profile/'.$profile_IPS->member_id.'-q/';
        header('Location: '.$urlGo);
        ob_flush();
        exit;   
    }
}

Если находимся на странице содержащей в URL текст /content/, то смотрим существует ли у пользователя хоть 1 сообщение, если их нет то выполняем редирект на его профиль.

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

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

Врядли кому нибудь пригодится, так как в нормальных условиях этот редирект отрабатывает только при определенных условиях, и о багов по нему небыло репортов. У вас он почему-то ложно срабатывает каждый раз вызывая таким образом зацикливание. Возможно поступают неактуальные данные (где-то вручную правили) или что-то не так высчитывается. Нужно смотреть в файле профиле profile.php какое из условий заставляет его сработать. К сожалению воспроизвести проблему мне не удалось.

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

siv1987 спасибо что дали направление поиска проблемы, это решило её правильным образом)

В файле profile.php в функции content() добавил проверку на количество контента пользователя, в случае если он равен 0, то не делать редирект.

У меня это находилось в 506 строке. Код ниже, доработка помечена комментарием //Доработка

	/* Build Output */
		if ( !$currentType )
		{
		    
			$query = \IPS\Content\Search\Query::init()->filterByAuthor( $this->member )->setOrder( \IPS\Content\Search\Query::ORDER_NEWEST_UPDATED )->setPage( $page );
			$results = $query->search();
            
			/* If we requested a higher page than is allowed, redirect back to last page */
			$totalResults = $results->count( TRUE );
            
			if( ceil( $totalResults / $query->resultsToGet ) < $page )
			{
			    if($this->member->member_posts != 0) //Доработка
			    {
    				$highestPage = floor( $totalResults / $query->resultsToGet );
    				\IPS\Output::i()->redirect( \IPS\Request::i()->url()->setQueryString( 'page', $highestPage ?: 1 ), NULL, 303 );
			    }
			}
            
			$pagination = trim( \IPS\Theme::i()->getTemplate( 'global', 'core', 'global' )->pagination( $this->member->url()->setQueryString( array( 'do' => 'content', 'all_activity' => 1 ) ), ceil( $results->count( TRUE ) / $query->resultsToGet ), $page, $query->resultsToGet ) );
			if ( \IPS\Request::i()->isAjax() AND \IPS\Request::i()->all_activity )
			{
				\IPS\Output::i()->json( array( 'rows' => \IPS\Theme::i()->getTemplate('profile')->userContentStream( $this->member, $results, $pagination ) ) );
				return;
			}
			else
			{
				$output = \IPS\Theme::i()->getTemplate('profile')->userContentStream( $this->member, $results, $pagination );
			}
		}

 

Упростил код. 504 строка

if( ceil( $totalResults / $query->resultsToGet ) < $page && $this->member->member_posts != 0)
{
  $highestPage = floor( $totalResults / $query->resultsToGet );
  \IPS\Output::i()->redirect( \IPS\Request::i()->url()->setQueryString( 'page', $highestPage ?: 1 ), NULL, 303 );
}

 

Хотя пожалуй лучше будет даже так && $this->member->member_posts > 0

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

Нужно было не костыли ставить, а продебажить данные почему срабатывает редирект.

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

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

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

Гость
Ответить в этой теме...

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

  Разрешено использовать не более 75 эмодзи.

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

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

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

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...