Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Осторе 2.3 - Notice: Undefined index: to_name in


Recommended Posts

Здравствуйте! Не понятно от куда взялась ошибка на страницах:

https://bonita.in.ua/kontakty/

https://bonita.in.ua/add-return/

https://bonita.in.ua/login/

https://bonita.in.ua/create-account/

https://bonita.in.ua/vouchers/

https://bonita.in.ua/create-affiliate-account/

https://bonita.in.ua/vouchers/  - Ругается на эту строчку if ((utf8_strlen($this->request->post['to_name']) < 1) || (utf8_strlen($this->request->post['to_name']) > 64)) {

Подскажите пожалуйста в чем может быть проблема и как решить?

Надіслати
Поділитися на інших сайтах


1 час назад, ghora сказал:

 if ((utf8_strlen($this->request->post['to_name']) < 1) || (utf8_strlen($this->request->post['to_name']) > 64)) {

Сообщение указывает, что скрипт пытается произвести какие-то действия с массивом $_POST, но такого индекса to_name не существует

Попробуй изменить

      

Цитата

if ((isset($this->request->post['to_name']))&& ( (utf8_strlen($this->request->post['to_name']) < 1) || (utf8_strlen($this->request->post['to_name']) > 64))) {

Это как временная мера, а дальше нужно разбираться

Надіслати
Поділитися на інших сайтах

Что это у Вас за странный код, какой через ajax подгружает страницу?

 

Спойлер

136494227_2019-11-2008_43_17.thumb.png.c26a516094de4f2aa2de076a017308be.png

При загрузке страницы он еще раз вызывает загрузку этой страницы. И вставляет. Отправка идет POST, но не передается никаких параметров.

OpenCart видит post запрос и отправляет на валидацию, думает, что это была отправка формы.

 

Доходит до стандартной функции:

Спойлер

protected function validate() {
	if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 32)) {
		$this->error['name'] = $this->language->get('error_name');
	}

	if (!preg_match($this->config->get('config_mail_regexp'), $this->request->post['email'])) {
		$this->error['email'] = $this->language->get('error_email');
	}

	if ((utf8_strlen($this->request->post['enquiry']) < 10) || (utf8_strlen($this->request->post['enquiry']) > 3000)) {
		$this->error['enquiry'] = $this->language->get('error_enquiry');
	}

	// Captcha
	if ($this->config->get($this->config->get('config_captcha') . '_status') && in_array('contact', (array)$this->config->get('config_captcha_page'))) {
		$captcha = $this->load->controller('extension/captcha/' . $this->config->get('config_captcha') . '/validate');

		if ($captcha) {
			$this->error['captcha'] = $captcha;
		}
	}

	return !$this->error;
}

 

И начинаются ошибки, что не может определить значение в POST, так как оно не передано.

 

Разберитесь вначале зачем и кто вставляет:

Спойлер

<span id="ajaxwidget-1" class="cmswidget">
</span>
<script>
$.ajax({
   type: 'POST',
   url: 'https://bonita.in.ua/kontakty/',
   data: {ajax_file: 'Y2FjaGUuYWpheC43MTQ1Y2FhOTM0ZjdmMTkyZGM1YTU0ZjYyZjUyMmEwNi4xLjAuMS50cGw=', sc_ajax: '3', cmswidget: '1'},
   async: true,
   dataType: 'html',
   beforeSend: function () {
    $('#ajaxwidget-1').html('Loading...<img src="catalog/view/theme/default/image/aloading16.png" alt="">');
  },
   success: function(msg_1){
    $('#ajaxwidget-1').replaceWith(msg_1);
  }
});
</script>

 

Эту часть кода в шаблон. Уберите этот код и страница будет работать правильно.

11 часов назад, ghora сказал:

https://bonita.in.ua/vouchers/  - Ругается на эту строчку if ((utf8_strlen($this->request->post['to_name']) < 1) || (utf8_strlen($this->request->post['to_name']) > 64)) {

Это тоже связано с ajax загрузкой контента на странице.

Спойлер

protected function validate() {
	if ((utf8_strlen($this->request->post['to_name']) < 1) || (utf8_strlen($this->request->post['to_name']) > 64)) {
		$this->error['to_name'] = $this->language->get('error_to_name');
	}

	if ((utf8_strlen($this->request->post['to_email']) > 96) || !preg_match($this->config->get('config_mail_regexp'), $this->request->post['to_email'])) {
		$this->error['to_email'] = $this->language->get('error_email');
	}

	if ((utf8_strlen($this->request->post['from_name']) < 1) || (utf8_strlen($this->request->post['from_name']) > 64)) {
		$this->error['from_name'] = $this->language->get('error_from_name');
	}

	if ((utf8_strlen($this->request->post['from_email']) > 96) || !preg_match($this->config->get('config_mail_regexp'), $this->request->post['from_email'])) {
		$this->error['from_email'] = $this->language->get('error_email');
	}

	if (!isset($this->request->post['voucher_theme_id'])) {
		$this->error['theme'] = $this->language->get('error_theme');
	}

	if (($this->currency->convert($this->request->post['amount'], $this->session->data['currency'], $this->config->get('config_currency')) < $this->config->get('config_voucher_min')) || ($this->currency->convert($this->request->post['amount'], $this->session->data['currency'], $this->config->get('config_currency')) > $this->config->get('config_voucher_max'))) {
		$this->error['amount'] = sprintf($this->language->get('error_amount'), $this->currency->format($this->config->get('config_voucher_min'), $this->session->data['currency']), $this->currency->format($this->config->get('config_voucher_max'), $this->session->data['currency']));
	}

	if (!isset($this->request->post['agree'])) {
		$this->error['warning'] = $this->language->get('error_agree');
	}

	return !$this->error;
}

 

Вот эта стандартная функция выдает ошибку.

 

 

Смотрю у Вас на всех страницах вставляется этот код:

Спойлер

<span id="ajaxwidget-1" class="cmswidget">
</span>
<script>
$.ajax({
   type: 'POST',
   url: 'https://bonita.in.ua/vouchers/',
   data: {ajax_file: 'Y2FjaGUuYWpheC44NDBiZGI4ZTM1N2IxMjkyMzU4N2ZjZTQ3NjhjMTkzMC4xLjAuMS50cGw=', sc_ajax: '3', cmswidget: '1'},
   async: true,
   dataType: 'html',
   beforeSend: function () {
    $('#ajaxwidget-1').html('Loading...<img src="catalog/view/theme/default/image/aloading16.png" alt="">');
  },
   success: function(msg_1){
    $('#ajaxwidget-1').replaceWith(msg_1);
  }
});
</script>

 

Ссылки только меняются.

Вопрос, зачем? Это ж увеличивает нагрузку на сервер, так как 2 раза делает одно и тоже.

Надіслати
Поділитися на інших сайтах

11 часов назад, ghora сказал:

Здравствуйте! Не понятно от куда взялась ошибка на страницах:

https://bonita.in.ua/kontakty/

https://bonita.in.ua/add-return/

https://bonita.in.ua/login/

https://bonita.in.ua/create-account/

https://bonita.in.ua/vouchers/

https://bonita.in.ua/create-affiliate-account/

https://bonita.in.ua/vouchers/  - Ругается на эту строчку if ((utf8_strlen($this->request->post['to_name']) < 1) || (utf8_strlen($this->request->post['to_name']) > 64)) {

Подскажите пожалуйста в чем может быть проблема и как решить?

p.s. если внимательно посмотреть, то ошибки связаны именно со страницами где идет отправка форм.

А функции проверки не получая необходимые им параметры и ругаются.

 

Как писал выше, уберите код, какой делает ajax запрос на туже страницу, на какой находится, и не будет ошибок.

Надіслати
Поділитися на інших сайтах

спасибо всем отписавшимся, проблема была в модуле переключения языков, там была включена ajax загрузка виджетов, выключев её, все ошибки пропали.

  • +1 1
Надіслати
Поділитися на інших сайтах


  • 7 months later...

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.