0 Пользователей и 1 Гость просматривают эту тему.
  • 7 Ответов
  • 3453 Просмотров
*

jatsuk

  • Новичок
  • 7
  • 0 / 0
 Чтобы выбранная доставка срабатывала - Vrtuemart записывает в Сессию переменную =1, Например,
$_SESSION[$value] = 1;

Данные о доставке известны не сразу, а приходят через AJAX. Следовательно вызываю обработчик (.php) и уже в нем
$_SESSION[$value] = 1;

Но так в Joomla свои сессии, то передаю id сессии из Joomla

session_id($session_id);
session_start();
$_SESSION[$value] = 1;

Проблема в том, что на одном хостинге все работает. Переменные записываются в одном файле и видятся в другом. Но на другом - это как две разные сессии, хотя session_id и session_name одинаковый. В чем может быть проблема ? может настройки хостинга или есть более лучший метод ??

Здесь вызываем
Код
 jQuery.ajax({
type: \"GET\",
url: \"".$base_ship_4."sessionsdek13.php\", 
data:({test:test,test2:test2,session_id:session_id}),
success: function(html){ 
}

обработчик
Код
if(count($_GET) > 0) {
$test=$_GET["test"];
$test2=$_GET["test2"];
$session_id =$_GET["session_id"];

session_id($session_id);
session_start();

$classname2 ='sdekmodule';
$value = urlencode( $classname2."|SDEK|".$test2."|".$test);
$_SESSION[$value] = 1;
echo '<input type="radio" checked="checked" name="shipping_rate_id" value="'.$value.'" id="'.$value.'" />';
}

*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
jatsuk, входящие параметры нужно фильтровать всегда. В Joomla для этого используется JInput
И почему вам не работать с сессиями без велосипедов. Подключите фреймворк и пользуйтесь
Код: php-brief
$session = JFactory::getSession();
$session->set('product',  'значение');
echo $session->get('product'); //  значение
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Все дело в том что php хранить сессию в файлах а Joomla по умолчанию в базе данных. Поэтому, если сесcия хранится в бд то даже если вы передадите скрипту ее ид в этих файлах ее не будет. Но если вы в опциях поставите выберете "нет" в качестве обработчика сессии в настройках, то Joomla будет хранить сессию в файлах средствами PHP поэтому она будет доступна в ваших скриптах и на всех сайтах вашего домена
« Последнее редактирование: 19.10.2014, 18:27:13 от zomby6888 »
интернет-блог: http://websiteprog.ru
*

fsv

  • Moderator
  • 2765
  • 402 / 2
На самом деле вопрос не о сессиях, а об особенностях организации алгоритма расчета доставки в VM1.1 .

Цитировать
Чтобы выбранная доставка срабатывала - Vrtuemart записывает в Сессию переменную =1, Например, $_SESSION[$value] = 1;
Не так. А вот так: $_SESSION[$shipping_rate_id] = 1;

При checkout происходит валидация доставки. В каждом из подключенных классов доставки есть функция validate( $d ) -
Спойлер
[свернуть]
Там это значение из сессии и используется.
Алгоритм рассчитан на >1 шага оформления заказа, а что такое AJAX, тогда не знали.
Когда делаю загрузку без определения $shipping_rate_id (есть ситуации, в т.ч. при аякс), просто изменяю в этой функции одну строку:
Код
else {
    return true;
}
Смысла в этой функции становится меньше, чем ноль. Но работает. Это проще, чем хакать checkout, с награмождением условий для каждой доставки, к тому же доставки меняются.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
*

jatsuk

  • Новичок
  • 7
  • 0 / 0
Все дело в том что php хранить сессию в файлах а Joomla по умолчанию в базе данных. Поэтому, если сесcия хранится в бд то даже если вы передадите скрипту ее ид в этих файлах ее не будет. Но если вы в опциях поставите выберете "нет" в качестве обработчика сессии в настройках, то Joomla будет хранить сессию в файлах средствами PHP поэтому она будет доступна в ваших скриптах и на всех сайтах вашего домена

Спасибо. Именно поэтому работало на другом сайте.
*

jatsuk

  • Новичок
  • 7
  • 0 / 0
jatsuk, входящие параметры нужно фильтровать всегда. В Joomla для этого используется JInput
И почему вам не работать с сессиями без велосипедов. Подключите фреймворк и пользуйтесь


Код: php-brief
$session = JFactory::getSession();
$session->set('product',  'значение');
echo $session->get('product'); //  значение
Пытался сделать это, но что-то не получилось. На досуге разберусь, по любому еще когда-нибудь пригодится =)
*

jatsuk

  • Новичок
  • 7
  • 0 / 0
На самом деле вопрос не о сессиях, а об особенностях организации алгоритма расчета доставки в VM1.1 .
Не так. А вот так: $_SESSION[$shipping_rate_id] = 1;

При checkout происходит валидация доставки. В каждом из подключенных классов доставки есть функция validate( $d ) -
Спойлер
[свернуть]
Там это значение из сессии и используется.
Алгоритм рассчитан на >1 шага оформления заказа, а что такое AJAX, тогда не знали.
Когда делаю загрузку без определения $shipping_rate_id (есть ситуации, в т.ч. при аякс), просто изменяю в этой функции одну строку:
Код
else {
    return true;
}
Смысла в этой функции становится меньше, чем ноль. Но работает. Это проще, чем хакать checkout, с награмождением условий для каждой доставки, к тому же доставки меняются.

Аха) ну да, вместо того, что бы сессии городить и запускать AJAX в аяксе, можно и так.

Не разбирался где именно проверяет, но по опыту скажу -
формат передачи в сессию:
Название_класса_доставки| блалблаблабла | цена
Если не передать первое и последнее, то не работает)
« Последнее редактирование: 20.10.2014, 08:06:56 от jatsuk »
*

fsv

  • Moderator
  • 2765
  • 402 / 2
Цитировать
формат передачи в сессию:
Название_класса_доставки| блалблаблабла | цена
Если не передать первое и последнее, то не работает)
Речь у вас о переменной $shipping_rate_id . Это урл-кодированная сложносоставная строка, состоит из 3-4 частей, разбор частей в массив потом идет по "|".
Что-то типа такого:
Спойлер
[свернуть]
Эту переменную не надо любой ценой засовывать в сессию раньше времени. При обновлении страницы оформления аяксом вы должны вернуть в done (success) HTML радиокнопки и надписи возле нее. И в файле-обработчике предусмотреть, чтобы $shipping_rate_id стала value радиокнопки. Все. Юзер выбирает эту радиокнопку, нажимает "Оформить заказ", значение радио (а это $shipping_rate_id) уходит в переменной $d на запись заказа, там и разбирается в массив.
Веб-разработка: заказ. Только новая объемная разработка. Качественно, дорого.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Модуль доставки "Почтой России"

Автор alibedog

Ответов: 104
Просмотров: 53943
Последний ответ 13.07.2021, 17:36:09
от SolopoV
Модуль доставки Укрпочта

Автор al_13

Ответов: 13
Просмотров: 6786
Последний ответ 13.05.2021, 12:57:59
от nnnata
Уведомление о заказе в зависимости от варианта доставки

Автор baltazors

Ответов: 0
Просмотров: 1888
Последний ответ 07.06.2017, 11:44:10
от baltazors
Модуль доставки - самовывоз. Как сделать?

Автор demonm

Ответов: 18
Просмотров: 8057
Последний ответ 29.04.2017, 17:31:56
от princeyury
Варианты доставки из админки

Автор El_nik

Ответов: 7
Просмотров: 2110
Последний ответ 27.04.2017, 10:51:38
от El_nik