Jump to content

Ошибка при оформлении заказа Strict Standards: Only variables should be passed by reference in....


Recommended Posts

Не пойму, в чем может быть проблема?
При оформлении заказа выскакивает ошибка:

Strict Standards: Only variables should be passed by reference in /home/v/..../checkout.php on line 658 Warning: Cannot modify header information - headers already sent by (output started at /home/v/..../checkout.php:658) in /home/v/..../inc/vam_redirect.inc.php on line 47

Версия 1.92. PHP 5.6

Link to post
Share on other sites

Жень, скинь что в 658 строке

и на vam_redirect.inc.php on line 47

 

Вроде тоже выскакивал, правил файл редиректа.

 

Link to post
Share on other sites

Вот в р-не 658:
 

// country is selected
        $country_info = vam_get_countriesList($selected_country_id,true);
        $cache_state_prov_values = vam_db_fetch_array(vam_db_query("select zone_id from " . TABLE_ZONES . " where zone_country_id = '" . (int)$selected_country_id . "' and zone_name = '" . vam_db_input($_POST['state']) . "'"));
        $cache_state_prov_code = $cache_state_prov_values['zone_code'];
        if (!vam_session_is_registered('customer_id')) {
        $order->delivery = array('postcode' => vam_db_prepare_input($_POST['postcode']),
                                 'state' => vam_db_prepare_input($_POST['state']),
                                 'city' => vam_db_prepare_input($_POST['city']),
                                 'country' => array('id' => $selected_country_id, 'title' => $country_info['countries_name'], 'iso_code_2' => $country_info['countries_iso_code_2'], 'iso_code_3' =>  $country_info['countries_iso_code_3']),
                                 'country_id' => $selected_country_id,
//add state zone_id
                                 'zone_id' => $cache_state_prov_values['zone_id'],
                                 'format_id' => vam_get_address_format_id($selected_country_id));
// country is selected End					

Вот в vam_redirect.inc.php на 47-й:
 

header('Location: ' . preg_replace("/[\r\n]+(.*)$/i", "", $url));

 

Link to post
Share on other sites

А на странице оформление не отключено например поле Страна, Регион?!

Может просто отключены поля, соответственно, пустые переменные и sql запрос не выполняется как надо и массив с данными не строится.

По идее, даже если так, это ж не ошибка (error), на сколько я понимаю, а предупреждение (warning), т.е. выполнение скрипта не останавливается и идёт дальше.

По идее, по умолчанию вывод предупреждение в /includes/application_top.php выключен:

// set the level of error reporting
error_reporting(0);
//ini_set('display_errors',1);
//error_reporting(E_ALL & ~E_NOTICE);

и всё должно работать даже так.

Link to post
Share on other sites

Страну и регион я первым делом проверил, включено.
Если вывод предупреждений и ошибок отключен, то после нажатия кнопки оформить дальше просто виснет.

Link to post
Share on other sites
6 минут назад, eugenem сказал:

Страну и регион я первым делом проверил, включено.
Если вывод предупреждений и ошибок отключен, то после нажатия кнопки оформить дальше просто виснет.

658 строка это какая именно!?

Вот эта:

        $cache_state_prov_values = vam_db_fetch_array(vam_db_query("select zone_id from " . TABLE_ZONES . " where zone_country_id = '" . (int)$selected_country_id . "' and zone_name = '" . vam_db_input($_POST['state']) . "'"));

?!

Проверьте, не пустые ли переменные, т.е. просто подставьте значения, например так:

        $cache_state_prov_values = vam_db_fetch_array(vam_db_query("select zone_id from " . TABLE_ZONES . " where zone_country_id = '176' and zone_name = 'Москва'"));

т.е. нужно просто чуть покопаться в коде, посмотреть, наверняка просто пустые переменные где-то.

+ можно попробовать взять /checkout.php из текущей версии VamShop.

Link to post
Share on other sites

Еще одна деталь, в mysql_db_error.log вот такая запись попадает:

11/09/2018 11:09:17 | 2006 - MySQL server has gone away | select affiliate_commission_percent from affiliate_affiliate where affiliate_id = '' | /checkout_process.php

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

Link to post
Share on other sites
5 минут назад, eugenem сказал:

Еще одна деталь, в mysql_db_error.log вот такая запись попадает:


11/09/2018 11:09:17 | 2006 - MySQL server has gone away | select affiliate_commission_percent from affiliate_affiliate where affiliate_id = '' | /checkout_process.php

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

Вообще странные ошибки конечно, на demo.vamshop.ru вроде всё работает.

Судя по последней ошибке, это тянется партнёрка.

По идее, это нужно закомментировать/удалить для пробы строку в /checkout_process.php:

   require_once(DIR_WS_INCLUDES . 'affiliate_checkout_process.php');

и/или в выбранном модуле оплаты:

require_once(DIR_WS_INCLUDES . 'affiliate_checkout_process.php');

 

Link to post
Share on other sites

Так, в общем, проблема вроде бы решена. Была она в настройках отправки email. Стоял метод SMTP, скорее всего с некорректными данными.

Link to post
Share on other sites
27 минут назад, eugenem сказал:

Так, в общем, проблема вроде бы решена. Была она в настройках отправки email. Стоял метод SMTP, скорее всего с некорректными данными.

Хорошо, что разобрались.

Хотя, по идее, если не может подключиться к smtp, то пишет ошибку, что не может отправить почту.

Link to post
Share on other sites

Да, помню. Но почему-то сейчас так. Дальше ковыряться не буду, заработало и ладно.

Link to post
Share on other sites
×
×
  • Create New...