Jump to content
Sign in to follow this  
ghora

Осторе 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)) {

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

Share this post


Link to post
Share on other sites

Что автор шаблона @octemplates говорит по этому поводу?

Share this post


Link to post
Share on other sites
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))) {

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

Share this post


Link to post
Share on other sites

Что это у Вас за странный код, какой через 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 раза делает одно и тоже.

Share this post


Link to post
Share on other sites
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 запрос на туже страницу, на какой находится, и не будет ошибок.

Share this post


Link to post
Share on other sites

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

  • +1 1

Share this post


Link to post
Share on other sites

спасибо большое!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.