СЕСИЯ при AJAX запросе к php файлу

  • 15 Ответов
  • 875 Просмотров

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

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

Сделал модуль.  Он выполняет тяжёлые запросы  БД, большая обработка массивов.
Теперь прикручиваю 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

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

Re: СЕСИЯ при AJAX запросе к php файлу
« Ответ #2 : 19.12.2015, 20:19:49 »
Нащупал методом тыка из других модулей

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

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

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

*

Оффлайн zomby6888

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

Re: СЕСИЯ при AJAX запросе к php файлу
« Ответ #4 : 20.12.2015, 01:25:52 »
Согласен с Вами.  Я не то что "плаваю"  а просто ТОНУ

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

*

Оффлайн robert

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

*

Оффлайн al-teen

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

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

*

Оффлайн robert

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

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

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

но print_r ($session);

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

Там нет mySesion

*

Оффлайн SmokerMan

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

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

  => мои публикации
    => мои работы
      => спектр моих услуг

*

Оффлайн zomby6888

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

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

*

Оффлайн robert

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

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

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

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

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

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

*

Оффлайн zomby6888

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

*

Оффлайн robert

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