Пропадают заказы в OpenCart

Бывают ситуации, когда клиент оформляет заказ, данные записываются в базу данных, но в админке заказ не появляется. При этом в журнале появляется сообщение об ошибке:

PHP Notice:  Undefined index: last_order_id in /../catalog/controller/checkout/success.php on line 68

Такая ситуация может возникнуть при включенном "гостевом" оформлении заказа без регистрации и соответственно при установленном модуле Simple, когда истекает время сессии и переменная last_order_id оказывается пустой. На практике это может выглядеть так: пользователь начал оформлять заказ, прервался на продолжительное время (большее, чем время до истечения сессии), а затем продолжил оформление заказа.

Проверить наличие проблемы можно выполнив запрос в строке браузера:

http://yourdomain/index.php?route=checkout/success

Частично проблему можно решить дописав условие в начало файла:
/../catalog/controller/checkout/success.php

public function index() { 	
		
		if ( isset($this->session->data['order_id']) && ( ! empty($this->session->data['order_id']))  ) {
			$this->session->data['last_order_id'] = $this->session->data['order_id'];
		}
// начало условия
		else {
    		$this->session->data['last_order_id'] = 0;
		}
// конец условия		
		if (isset($this->session->data['order_id'])) {
			$this->cart->clear();

Эта полумера убирает notice с экрана присваивая переменной last_order_id значение 0, но не решает проблему гостевого заказа с просроченной сессией. Как вариант, можно вообще отключить быстрый заказ без регистрации или увеличить время сессии в php.ini с умолчальных 24 минут до 1 часа:

; After this number of seconds, stored data will be seen as 'garbage' and
; cleaned up by the garbage collection process.
; http://php.net/session.gc-maxlifetime
;session.gc_maxlifetime = 1440
session.gc_maxlifetime = 3600

или в .htaccess

php_value session.gc_maxlifetime "время сессии в секундах"
Метки: . Закладка Постоянная ссылка.

Один комментарий к "Пропадают заказы в OpenCart"

  1. Татьяна пишет:

    Помогите,пожалуйста,ошибка
    Notice: unserialize() [function.unserialize]: Error at offset 200 of 65535 bytes in Z:\home\ocstore\www\index.php on line 68
    не пойму,что делать.все перепробовала.

Добавить комментарий

Ваш e-mail не будет опубликован.

*