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

Возможно ли исправить ошибку в магазине?


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

Время от времени в логах появляется ошибка, говорящая о том, что ее вызвал гость, на подобных страницах:

https://ip-gamers.net/clients/orders/13

Сама ошибка вот:

OutOfRangeException:  (0)
#0 ip-gamers.net/applications/nexus/modules/front/clients/invoices.php(58): IPS\Patterns\_ActiveRecord::load('13')
#1 ip-gamers.net/system/Dispatcher/Dispatcher.php(153): IPS\nexus\modules\front\clients\_invoices->execute()
#2 ip-gamers.net/index.php(13): IPS\_Dispatcher->run()
#3 {main}

Эту ошибку как то возможно исправить?

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

Если гости не могут покупать в принципе, то добавить             

if ( !\IPS\Member::loggedIn()->member_id )  {
                \IPS\Output::i()->error( 'no_module_permission_guest', '2X215/3', 403, '' );
}

перед строкой 54 (сразу после else).

 

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

1 минуту назад, Desti сказал:

Если гости не могут покупать

А гости в IPS разве априори что то могут покупать?

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

15 минут назад, Desti сказал:

if ( !\IPS\Member::loggedIn()->member_id )  {
                \IPS\Output::i()->error( 'no_module_permission_guest', '2X215/3', 403, '' );
}

Так, я это вставил в файл:

Спойлер

image.thumb.png.9c2134cc3ee08fdfc2033cb5323a0222.png

Как теперь проверить, выйдет ли подобная ошибка или нет?

А ну вот: В счетах стали появляться счета от гостей:

image.thumb.png.ddc55835db0a33cbf4494070f41148d1.png

Но ошибка при этом появляться вроде перестала.

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

Счета от гостей появляться будут, по умолчанию гость может положить товар в корзину, но для покупки нужна регистрация. Возможно, мое решение не самое корректное, может стоит перехватить исключение..

Замените 58-ю строку на это: (а первое исправление удалите)

try
{
	$this->invoice = \IPS\nexus\Invoice::load( \IPS\Request::i()->id );
}
catch ( \OutOfRangeException $e )
{
	\IPS\Output::i()->error( 'node_error', '2X215/7', 404, '' );
}

 

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

14 минут назад, Desti сказал:

Замените 58-ю строку на это: (а первое исправление удалите)

Прости за такой глупый вопрос. Но 58 строка после редактирования или до? Вот в данный момент это фрагмент выглядит так:

if ( \IPS\Member::loggedIn()->member_id )
			{
				try
				{
					$this->invoice = \IPS\nexus\Invoice::loadAndCheckPerms( \IPS\Request::i()->id );
				}
				catch ( \OutOfRangeException $e )
				{
					\IPS\Output::i()->error( 'node_error', '2X215/1', 404, '' );
				}
			}
			else
				if ( !\IPS\Member::loggedIn()->member_id )  {
                \IPS\Output::i()->error( 'no_module_permission_guest', '2X215/3', 403, '' );
}
			{
				/* Prevent the vid key from being exposed in referrers */
				\IPS\Output::i()->sendHeader( "Referrer-Policy: origin" );

				$key = isset( \IPS\Request::i()->key ) ? \IPS\Request::i()->key : ( isset( \IPS\Request::i()->cookie['guestTransactionKey'] ) ? \IPS\Request::i()->cookie['guestTransactionKey'] : NULL );
				$this->invoice = \IPS\nexus\Invoice::load( \IPS\Request::i()->id );

				if( $this->invoice->member->member_id or !$key or !isset( $this->invoice->guest_data['guestTransactionKey'] ) or !\IPS\Login::compareHashes( $key, $this->invoice->guest_data['guestTransactionKey'] ) )
				{
					\IPS\Output::i()->error( 'no_module_permission_guest', '2X215/6', 404, '' );
				}
			}

 

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

$this->invoice = \IPS\nexus\Invoice::load( \IPS\Request::i()->id );

это заменить на то, что кинул он.

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

@Desti, @by_ix спасибо. Вы очень помогли. Если будут изменения сообщу.

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

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

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

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

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

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

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

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

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

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

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