Налик Опубликовано 4 апреля, 2019 Поделиться Опубликовано 4 апреля, 2019 Здравствуйте. Установлен Invision Community v4.3.4 NULLED, при просмотре контента пользователя который не разместил ни одного поста на форуме появляется ошибка "Сайт ***.ru выполнил переадресацию слишком много раз." Плагины и приложения все отключал, не помогает. Может знает кто в чем проблема? Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Налик Опубликовано 10 апреля, 2019 Автор Поделиться Опубликовано 10 апреля, 2019 Увы не придумал ничего лучше размещения этого скрипта в 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 сообщение, если их нет то выполняем редирект на его профиль. Вот такой некрасивый костыль. Возможно кому-то пригодиться или кто-то предложит решение лучше. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
siv1987 Опубликовано 10 апреля, 2019 Поделиться Опубликовано 10 апреля, 2019 Врядли кому нибудь пригодится, так как в нормальных условиях этот редирект отрабатывает только при определенных условиях, и о багов по нему небыло репортов. У вас он почему-то ложно срабатывает каждый раз вызывая таким образом зацикливание. Возможно поступают неактуальные данные (где-то вручную правили) или что-то не так высчитывается. Нужно смотреть в файле профиле profile.php какое из условий заставляет его сработать. К сожалению воспроизвести проблему мне не удалось. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Налик Опубликовано 11 апреля, 2019 Автор Поделиться Опубликовано 11 апреля, 2019 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 Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
siv1987 Опубликовано 11 апреля, 2019 Поделиться Опубликовано 11 апреля, 2019 Нужно было не костыли ставить, а продебажить данные почему срабатывает редирект. Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.