Jump to content

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


Recommended Posts

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

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

error1.thumb.png.f4caef48f6db2be5273614e80657824e.png

error.png.b36bf517d9cfc2b4f9deb22eeda8467c.png

error3.thumb.gif.9a0a1fe9d846e5911d17fdfd0b2a347d.gif

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

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

Link to comment
Share on other sites

Увы не придумал ничего лучше размещения этого скрипта в 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 сообщение, если их нет то выполняем редирект на его профиль.

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

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

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...