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

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Добрый день. Постараюсь описать то чего планировал добиться. Но сил уже нет никаких :((

Сделал модуль.  Он выполняет тяжёлые запросы  БД, большая обработка массивов.
Теперь прикручиваю AJAX к нему. Идея была в том что, полученные и обработанные массивы после  загрузки страницы хранить в СЕСИИ.
Потом когда выполняю некие действия модуле, Запускать Ajax'om  некий дополнительный файл, который будет считывать из СЕСИИ массивы,  обрабатывать их и возращать результат. НО СЕСИЯ НЕ ЧИТАЕТЬСЯ доп файле :(

в кратце структура сесии:

main.php  основной файл модуля
Код
session_start();
$zzz = 'ЗНАЧЕНИЕ - в  модуле ето будет серилизованный массив';
$_SESSION['mySesion'] = $zzz;
echo '<br><h2> сесия из MAIN-----' .$_SESSION['mySesion']. '<h2>';

ajax.php  вспомогательный файл, к которому идёт AJAX запрос
Код
session_start();
echo '<br><h2> сесия из AJAX -----' .$_SESSION['mySesion']. '<h2>';
выдаёт вот такую ошибку Notice: Undefined index: mySesion in

Если сделать print_r($_SESSION);  в ajax.php мы получаем array(0) {}.    :(


Ну думаю попробую через такой метод  JFactory::getSession();
ajax.php  вспомогательный файл
Код
define( '_JEXEC', 1 );
error_reporting(E_ALL & ~E_NOTICE);

if ( file_exists( __DIR__ . '/defines.php' ) ) {
    include_once __DIR__ . '/defines.php';
}
if ( !defined( '_JDEFINES' ) ) {
    define( 'JPATH_BASE', __DIR__ . '/../../' );
    require_once JPATH_BASE . '/includes/defines.php';
}
require_once JPATH_BASE . '/includes/framework.php';

echo '<h1>AJAX ПАШЕТ ! </h1>';

$session = JFactory::getSession();
$session->set('mySesion',  'значение');
echo'<pre>';
print_r ($session);
 echo'</pre>';

а в переменной сесии содержиться Фигня :(
Спойлер
[свернуть]


Каким образом можно достучаться AJAX запросом, к созданной сесии в другом файле  ?   Помогите пожалуйста  тут опыт надо,  инет перековырял сил нет :((
*

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
Re: СЕСИЯ при AJAX запросе к php файлу
« Ответ #1 : 19.12.2015, 18:10:06 »
Вы немного не те технологии используете для решения этой задачи. Не нужно хранить это в php сессии. Есть localStorage. Или IndexedDB. Это лучше подходит для решения подобных задач. Вместо неведомого AJAX можно использовать Worker.
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: СЕСИЯ при AJAX запросе к php файлу
« Ответ #2 : 19.12.2015, 18:19:49 »
Нащупал методом тыка из других модулей

$mainframe = JFactory::getApplication('site');   //  БЕЗ ЕТОГО СЕСИИ НЕ БУДУТ РАБОТАТЬ !

Очень прошу обьясните почему сраза начало всё работать ?? :(я с самого утра себе мозг ломал.....    Что происходит при запуске метода getApplication('site')

al-teen  Спасибо Вам  погуглю-почитаю, я как понял ето более менее новые технологии...
  А почему сесии в моём случае не подходят ? :(
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: СЕСИЯ при AJAX запросе к php файлу
« Ответ #3 : 19.12.2015, 22:22:00 »
Все просто сессии php, сессии Joomla админ интерфейса и сессии Joomla на фронте это вообще разные сессии. Поскольку вы плаваете еще во многих вопросах, то советы что вам выше дали вам только во вред будут. Я так думаю что сначало надо разобратся с нативными инструментами а потом уже пробовать всякие модные фронтенд фичи, тем более что они только в современных браузерах работают.
интернет-блог: http://websiteprog.ru
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: СЕСИЯ при AJAX запросе к php файлу
« Ответ #4 : 19.12.2015, 23:25:52 »
Согласен с Вами.  Я не то что "плаваю"  а просто ТОНУ

я не могу понять как начать гребсти  :((
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: СЕСИЯ при AJAX запросе к php файлу
« Ответ #5 : 19.12.2015, 23:51:07 »
я не могу понять как начать гребсти  :((
Увы, только самому читать, за вас никто это не сделает. Начать с ваш_сайт/index.php.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

al-teen

  • Глобальный модератор
  • 2385
  • 224 / 10
  • im
Re: СЕСИЯ при AJAX запросе к php файлу
« Ответ #6 : 20.12.2015, 00:07:51 »
Тут есть ответ. Дело в производительности. php сессия завершается, когда пользователь уходит с сайта. Можно запоминать сессию в куки и восстанавливать ее. Это все на php. Но Вам ведь нужно что-то там через AJAX делать, верно? Это среда js, из local strorage для js данные получать удобнее. И есть еще такое понятие, как работа сайта при обрыве сети, которую php session никак не сможет обеспечить, в отличии от ls. И это не настолько новые технологии, как может показаться вначале.

Цитировать
тем более что они только в современных браузерах работают.
Да ладно? Вообще, в почти 2016м году, тащить некробраузеры является моветоном. Это невыгодно с финансовой точки зрения. Эти браузеры не поддерживают даже сами создатели этих браузеров. Пора избавляться от стереотипов. Освоить localStorage ничуть не сложнее, нежели освоить php session.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: СЕСИЯ при AJAX запросе к php файлу
« Ответ #7 : 20.12.2015, 00:32:01 »
Код: php-brief
print_r ($session->get('mySesion'));
Так вы получите значение ранее сохраненной в сессии переменной. Но все равно читайте код, как я советовал выше, тогда не придется задавать такие вопросы.
[offtop]
И пишите "сессия" вместо "сесия", "это" вместо "ето".
[/offtop]
Не будь паразитом, сделай что-нибудь самостоятельно!
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: СЕСИЯ при AJAX запросе к php файлу
« Ответ #8 : 20.12.2015, 02:30:03 »
у меня кнопки "э" "в" "бекспейс" "закр. скобка"   на ноутбуке перестали отрабатывать
Я за неделю и так напсиховался с ними :(

print_r ($session->get('mySesion'));   знаю

но print_r ($session);

какой то ОБРЕЗАННЫЙ:
Спойлер
[свернуть]

Там нет mySesion
*

SmokerMan

  • Гуру
  • 5293
  • 720 / 26
Re: СЕСИЯ при AJAX запросе к php файлу
« Ответ #9 : 20.12.2015, 02:50:31 »
используйте глобальный массив $_SESSION, без Joomla
а так в общем в сессии не очень рекомендуется хранить большой объем данных
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Re: СЕСИЯ при AJAX запросе к php файлу
« Ответ #10 : 20.12.2015, 03:16:09 »
В дополнение к вышесказанному: можно создать в таблице #__session столбец и хранить сериализованные массивы там. Вам же именно массивы нужно хранить? Тогда json_encode/decode. Хотя я не знаю, что именно вам нужно сделать, может есть решение проще.
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: СЕСИЯ при AJAX запросе к php файлу
« Ответ #11 : 20.12.2015, 07:43:27 »
используйте глобальный массив $_SESSION, без Joomla
а так в общем в сессии не очень рекомендуется хранить большой объем данных

Интересно почему? Вроде сессии то создавались изначально чтобы хранить большие объемы данных в отличии от кук у которых ограничение по объему.Тем более что сессии Joomla позволяют хранить данные в БД, в файлах и даже в памяти.
интернет-блог: http://websiteprog.ru
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: СЕСИЯ при AJAX запросе к php файлу
« Ответ #12 : 20.12.2015, 12:11:40 »
print_r ($session->get('mySesion'));   знаю
но print_r ($session);
какой то ОБРЕЗАННЫЙ:
Если вы знаете, то у вас не должно быть проблем с получением данных. И если бы вы посмотрели класс JSession, то вы бы узнали, что объект $session содержит методы присваивать и получать нужные вам данные, но не их самих.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Re: СЕСИЯ при AJAX запросе к php файлу
« Ответ #13 : 20.12.2015, 13:26:15 »
Блин я накасячил с классом JSession.
В основном файле СЕСИЮ записывал в глобальный массив $_SESSION. а в загруженном AJAX файле вызывал сесию с помощью JSession,

Ето получается, я разные сесии крутил ? :))  Блин вчера убил Уйму времени на ето :(  чтение инфы и т.д.

глобальный массив $_SESSION в подгружаемом AJAX файле,   не доступен без:
$mainframe = JFactory::getApplication('site');   //  БЕЗ ЕТОГО $_SESSION НЕ БУДУТ РАБОТАТЬ !

И почему так? Для меня тоже загадка.

-------------------------------------------
Прошу прощения за созданную тему не в том Разделе
« Последнее редактирование: 20.12.2015, 13:54:12 от avantyrist »
*

zomby6888

  • Завсегдатай
  • 1473
  • 171 / 3
Re: СЕСИЯ при AJAX запросе к php файлу
« Ответ #14 : 20.12.2015, 14:13:13 »
А вы посмотрите конструктор JapplicationCMS класса и все станет ясно. Он загружает сессию при инициализации. Читайте исходники и не будет вопросов. $mainframe устаревшая глобальная переменная, которая юзалась в допотопные времена в линейке 1.x. Сейчас она не нужна
интернет-блог: http://websiteprog.ru
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: СЕСИЯ при AJAX запросе к php файлу
« Ответ #15 : 20.12.2015, 14:13:43 »
Да все записывается в $_SESSION. И потом, $_SESSION и JSession - это инструменты для работы с сессией, а не сама сессия.
$mainframe = JFactory::getApplication('site');   //  БЕЗ ЕТОГО $_SESSION НЕ БУДУТ РАБОТАТЬ !
И почему так? Для меня тоже загадка.
Вы хотите, чтобы другие делали работу за вас? Почему не почитали хотя бы код index.php?
Не будь паразитом, сделай что-нибудь самостоятельно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не отрабатывает условие LIMIT в sql-запросе в методе модели getListQuery ()

Автор Inoken

Ответов: 6
Просмотров: 802
Последний ответ 14.06.2017, 09:01:38
от Inoken
Модуль обратной связи AJAX

Автор AlekVolsk

Ответов: 61
Просмотров: 4453
Последний ответ 07.09.2014, 13:22:35
от AlekVolsk
[Решено] Русский язык в AJAX.php

Автор Hishchnik

Ответов: 15
Просмотров: 1885
Последний ответ 10.06.2014, 19:03:34
от Hishchnik
AJAX + Joomla

Автор scripter

Ответов: 3
Просмотров: 1107
Последний ответ 28.04.2014, 16:52:57
от Shustry
Вопрос об использовании AJAX в модуле

Автор maxakagaret

Ответов: 13
Просмотров: 1597
Последний ответ 26.02.2014, 18:16:17
от maxakagaret