Jump to content

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

Featured Replies

Posted
comment_184495

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

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}

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

comment_184500

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

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

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

 

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

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

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

  • Author
comment_184502
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

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

comment_184503

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

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

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

 

  • Author
comment_184505
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, '' );
				}
			}

 

  • Author
comment_184508

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

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
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.