Меню Рубрики

Установка переменной сессии в битрикс

Установка переменной сессии в битрикс

Евгений Смолин: Сам кувыркался с непонятками (пока курсы учебные не прочитал и руками не попробовал то, что там написано). Битрикс из тех систем, где изучение «методом тыка» не очень эффективно без предварительного изучения учебных курсов. Уважаемые новички, потратьте немного своего драгоценного времени, пройдите пару-тройку учебных курсов и масса вопросов просто испарится — там есть ответы на множество вопросов.

Курс для разработчиков — продолжение линейки учебных курсов по Bitrix Framework. Получение сертификата по курсу рекомендуется после успешной сдачи тестов по всей линейке курсов, так как без понятия о работе Контент-менеджера и Администратора создание успешных сайтов будет затруднено.

Чтобы научиться программировать в Bitrix Framework, нет необходимости изучать всю линейку курсов. Но есть моменты, которые необходимо знать разработчикам о системе, они раскрыты в начальных курсах:

  • Интерфейс программы — в главе Элементы управления курса Контент-менеджер.
  • Компоненты 2.0 (начальные сведения) в главе Компоненты 2.0 (начальные сведения) курса Контент-менеджер.
  • Информационные блоки — в главе Информационные блоки (начальные сведения) курса Контент-менеджер.
  • Управление доступом к файлам, элементам контента, модулям и другие права доступа в главе Управление доступом курса Администратор. Базовый.
  • Работа с инструментами системы — в главе Работа с инструментами курса Администратор. Базовый.
  • Модуль Поиск — в главе Поиск курса Администратор. Базовый.
  • Вся информация по администрированию модулей размещена в курсах:
    • Администрирование. Модули — модули «1С-Битрикс: Управление сайтом»
    • Администратор. Бизнес — модули «1С-Битрикс: Управление сайтом», связанные с коммерческой деятельностью в Интернете.
    • Администратор «1С-Битрикс: Корпоративный портал» — модули «1С-Битрикс: Корпоративный портал»

    По завершению изучения этого курса можно продолжить изучение работы в продуктах Bitrix Framework по следующим курсам:

  • Бизнес-процессы — настройка и создание бизнес-процессов.
  • Бот платформа Битрикс24 — приложения, основанных на чатах в веб-мессенджере.
  • Маркетплейс Битрикс24 — приложения для коробочной и облачной версий Битрикс24.
  • Маркетплейс Bitrix Framework — расширение функционала проектов на основе Bitrix Framework с помощью сторонних модулей и решений.
  • Многосайтовость — система многосайтовости и принципы работы с многосайтовой конфигурацией.

Начальные требования к подготовке

Для успешного изучения курса и овладения мастерством разработки сайтов на Bitrix Framework необходимо владеть (хотя бы на начальном уровне):

  • основами PHP, баз данных;
  • основами HTML, CSS.

После изучения курса вам будет предложено пройти тесты на сертификацию. При успешной сдаче последовательности тестов на странице Моё обучение можно просмотреть результат обучения и загрузить сертификат в формате PDF.

На каждой странице курса авторизованный на сайте посетитель может дать комментарий к содержимому страницы. Комментарий — не форум, там не ведётся обсуждений или разъяснений. Это инструмент для сообщений нам об ошибках, неточностях. Для отправки комментария воспользуйтесь расположенной в правом нижнем углу окна браузера кнопкой:

Для преподавания оффлайн

Если данный курс берётся в качестве основы для оффлайного преподавания, то рекомендуемая продолжительность: 5 дней (40 академических часов).

Примечание: В тексте курса вы встретите цитаты, высказанные в разное время разработчиками системы и разработчиками проектов на базе Bitrix Framework. Надеемся, что такие неформальные замечания внесут некоторое разнообразие в процесс изучения. Заодно опытные специалисты поделятся и своим опытом.

Имена авторов цитат даются в том написании, в каком авторы зарегистрировали себя на сайте «1С-Битрикс».

Скачать материалы курса в формате CHM. Файлы формата CHM обновляются ежемесячно, тем не менее, возможно некоторое отставание их от онлайновой версии курса.

Чтобы отключить подобное отношение к файлу необходимо:

    перейти в свойства файла на вкладку Общие. Внизу у Вас отобразится сообщение о том, что этот файл был заблокирован системой с целью защиты компьютера.

Отсутствие кнопки Разблокировать возможно в двух случаях:

  1. Файл лежит не локально, а на сетевом ресурсе.
  2. Если файл лежит на локальном диске, но путь к нему содержит спецсимволы (# и прочие).

источник

Как использовать сессии и переменные сессий в PHP

От автора: обработка сессии PHP является ключевой концепцией языка, которая позволяет сохранять информацию пользователя на всех страницах веб-сайта или приложения. В этом посте вы узнаете основы обработки сессий в PHP.

Мы начнем с пояснения того, как работают сессии и как они связаны с файлами куки. Затем мы рассмотрим несколько фрагментов кода, демонстрирующих, как работать с сессиями. Вы узнаете, как создавать и удалять сессии и как изменять переменные сессии.

Что такое сессия в PHP?

Сессия — это механизм для сохранения информации на разных веб-страницах для идентификации пользователей при навигации по сайту или приложению. Вам интересно, почему сессии необходимы для веб-сайта? Чтобы понять, для чего необходимы сессии, нам нужно рассмотреть, как работает протокол HTTP.

Читайте также:  Установка magicar на солярис

Протокол HTTP — это протокол без учета состояния, что означает, что сервер не может запоминать конкретного пользователя между несколькими запросами. Например, при доступе к веб-странице сервер отвечает за предоставление содержимого запрашиваемой страницы. Поэтому, когда вы обращаетесь к другим страницам одного и того же веб-сайта, веб-сервер интерпретирует каждый запрос отдельно, как если бы они не были связаны друг с другом. Серверу не известно, что каждый запрос исходит от одного и того же пользователя. Следующая диаграмма иллюстрирует протокол HTTP.

Бесплатный курс по PHP программированию

Освойте курс и узнайте, как создать динамичный сайт на PHP и MySQL с полного нуля, используя модель MVC

В курсе 39 уроков | 15 часов видео | исходники для каждого урока

В этой модели, если вы хотите отображать информацию пользователя, вам нужно будет аутентифицировать пользователя в каждом запросе. Представьте, что вам нужно было бы вводить имя пользователя и пароль на каждой странице, на которой была представлена ваша информация о профиле! Да, это было бы вообще не практичным, и именно здесь на сцену выходят сессии.

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

Поток авторизации с помощью сессий и файлов куки

Давайте кратко рассмотрим общий поток авторизации, чтобы понять, что происходит за кулисами.

Пользователь открывает страницу авторизации на сайте.

После отправки данных формы входа сервер на другом конце аутентифицирует запрос, проверив введенные учетные данные.

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

Затем пользователю передается идентификатор сессии, а также любой запрошенный ресурс. За кулисами этот идентификатор сеанса отправляется в файле куки PHPSESSID в заголовке ответа.

Когда браузер получает ответ от сервера, он находит его в заголовке файла куки PHPSESSID. Если куки разрешены браузером, он сохранит этот файл PHPSESSID, в котором хранится идентификатор сессии, переданный сервером.

Для последующих запросов куки PHPSESSID возвращается на сервер. Когда сервер получает файл куки PHPSESSID, он попытается инициализировать сессию с этим идентификатором сессии. Он делает это, загружая файл сессии, который был создан ранее во время инициализации сессии. Затем он инициализирует переменную суперглобального массива $_SESSION с данными, хранящимися в файле сессии.

Таким образом, пользовательские данные сохраняются для нескольких запросов, и пользователь остается авторизованным на протяжении всей сессии. На следующей диаграмме показано, как протокол HTTP работает с сессиями.

Теперь, когда мы кратко рассмотрели сессии, мы возьмем несколько практических примеров, чтобы продемонстрировать, как создавать и изменять переменные сессии.

Как начать сессию

В этом разделе мы рассмотрим, как в PHP начать сессию. Каждый раз, когда вы хотите работать с переменными сессии, вам необходимо убедиться, что сессия уже запущена. Есть несколько способов начать сессию в PHP.

Использовать функцию session_start

Это метод, который вы встретите чаще всего, когда сессия запускается функцией session_start.

источник

нужна помощь по сессиям.

Требуемые модули PHP:
параметр — — поддержка сессий
требуется — да
Текущее значение — Нет. Вероятно, каталог, используемый для сохранения параметров сессии, не доступен для записи

вопрос, какой каталог используется для сохранения параметров сессии? вероятно я поставил ему галочку — только чтение. подскажите пожалуйста.

тобиш в главном каталоге, файл htaccess.php
строчки session.save_path у меня вообще нет) все что есть из сессий, это php_flag session.use_trans_sid off, и она закомментированна.

P.S. если бы не правильно был прописан путь, мне бы написали подругому, у меня другая проблема, закрыт доступ к записи в каталог параметров сессий, мне надо его найти.

Александр, Вам же сказали

Код

Если не можете сами, то попросите техподдержку хостинга.

Создайте, например, в папке htdocs папку session, и попросите техподдержку хостинга поменять путь в php.ini на session.save_path = /storage/home/srv14976/htdocs/session/

Да, не забудьте права на запись в папку session установить.

по умолчанию каталог темпа — htdocs/tmp, права на запись стоят, bitrix на это начхал( пишит эту ошибку и все тут. я недоумеваю что делать.

З.Ы. возможно bitrix просит открыть доступ к каталогу не общему, а внутреннему, так что вопрос думаю к администраторам мой..

Появилась та же ошибка. При чем — перед этим 3 копии поставил — без вопросов.
save_path указывает на существующий каталог с возможностью записи (там уже лежат файлы сессий от других сайтов)

if (!BXInstallServices::CheckSession())
<
$this->SetError(InstallGetMessage(«INST_SESSION_NOT_SUPPORT»));
return false;
>

Цитата
Василий Лучинкин пишет:
\bitrix\modules\main\install\wizard\wizard.php

if (!BXInstallServices::CheckSession())
<
$this->SetError(InstallGetMessage(«INST_SESSION_NOT_SUPPORT»));
return false;
>

Ага, только это зенд. wizard.php закодирован.
та же проблема. Чёртов битрикс. Голову себе сломал, В php.ini параметр session.save_path = «/tmp» У папки tmp права стоят 777. Бред.

У меня тоже имеет место эта проблема.

Цитата
Илья Душин пишет:
В php.ini параметр session.save_path = «/tmp» У папки tmp права стоят 777. Бред.

менял в htacces путь у session.save_path не помогло (

через restore сайт восстановился с н-ного раза но вылетал из админки.

Сейчас пробую поставить заново. Выдает что недоступен каталог под сессии.

Хостеры пинают что у них все хорошо, на другом хостинге все поднял без проблем.
Доступа к php.ini нету.

пробовал создавать директории и ставить на них права и по пути в phpinfo и в корне в tmp и уровнем выше, тоже нашел tmp какой то, битрикс не хватает

Поделюсь интересной ситуацией. Я также напоролся на ошибку «Нет. Вероятно, каталог, используемый для сохранения параметров сессии, не доступен для записи». В php.ini прописал session.save_path = «C:\tmp»(ставил в локале), жмакаю F5(ни один раз), проблема не решается. Захожу в папку tmp сессия создана, но весит 0 байт, а потом чисто случайно нажал «Назад» на предущий шаг и снова вперёд и.. даже с бубном прыгать не надо)) все работает)

Всем удачи, может кому-то моё сообщение поможет

такой прикол, при установке вылазит ошибка:
Кодировка UTF-8 доступна для версии MySQL начиная с 4.1.2
хотя я не ставлю галочку установка в utf-8 и mysql 5-й .

Столкнулся с аналогичной проблемой.
PHP 5.3.3
Сессии включены (Session Support: enabled), каталог для сохранения сессий установлен и доступен для записи.
Тут чуть выше подсказали заглянуть в /bitrix/modules/main/install/wizard/wizard.php, но его без лишних усилий не прочитаешь. Однако тут подсказали, что доступность сессий проверяет BXInstallServices::CheckSession(). Код этого метода как раз доступен (/bitrix/modules/main/install/wizard/utils.php):

Код

Посмотрим на один метод выше:

Код

Уж не знаю, что именно хотели сказать разработчики, но с учётом SetSession() , CheckSession() , я считаю, должен выглядеть как-то так:

Код

При таком раскладе во-первых, всё логично: записали, потом проверили, записалось ли, и во-вторых, проверка работает

источник

Использование сессии Bitrix на другом поддомене

Как использовать открытую на сайте с CMS Bitrix сессию на другом поддомене сервера?

Например, есть сайт http://site.ru , на котором установлена система Bitrix, есть http://sub.site.ru , на котором лежит другой сайт, но доступен он должен быть только для пользователей, прошедших аутентификацию на сайте http://site.ru .

Цитата
Sergey Rizhikov пишет:
А в чем смысл? Может просто авторизацию раскидать средствами продукта?

То есть как «раскидывать авторизацию»?

Наверное, нужно сделать так, чтобы php-скрипт на поддомене проверял, есть ли сессия?

Помогите, пожалуйста, дайте пример, очень нужно.

Цитата
S Lee пишет:
В настройках главного модуля, на закладке «Авторизация» есть чекбокс «Распространять авторизацию на все домены».

Спасибо! Попробую.

Цитата
S Lee пишет:
Только вот вопрос, http://sub.site.ru/ тоже на Битриксе?

Нет, он на собственном движке

Подробнее расскажу о своей проблеме.

Вот то, что я сделал:
1) создал скрипт http://sub.site/script.php:

Код

2) авторизировался на сайте http://site/
3) запустил http://sub.site/script.php

Что нужно сделать, чтобы скрипт http://sub.site/script.php мог узнать, пройдена ли авторизация на сайте http://site/ ?

Неужели ни кто не сталкивался с такой необходимостью?

Объясню поподробней, задача кажется простой.

Есть сайт компании http://site/ , куда установлена платная версия Битрикс.
Есть сайт этой же компании на http://sub.site/ , который написан самостоятельно на PHP.

Так вот, на сайт http://sub.site/ нужно пускать только авторизованных пользователей (тех, которые ввели логин и пароль) на сайте http://site/ .

То есть нужно в PHP скриптах на сайте http://sub.site/ проверять, установлена ли сессия.

Надеюсь, объяснил доходчиво.

Пробовал в настройках Главного модуля разрешать распространение сессии на все поддомены и в скрипте на http://sub.site/ стартовать сессию функцией session_start(); и смотреть на установленные переменные сессии, в которых надеялся обнаружить хотя бы ID залогиненного пользователя. Не получилось.

Где хранятся данные о сессии пользователя? Как узнать на другом поддомене (на поддомене НЕ УСТАНОВЛЕНА CMS BITRIX) сервера, авторизован ли пользователь или это гость?

источник

Настройка времени сессий в PHP

От времени действия сессии зависит период работоспособности PHP-переменных $_SESSION, и как следствие, активности веб-приложений. Например, если пользователь авторизовался в системе, время в течении которого он может бездействовать без необходимости повторного ввода логина и пароля зависит от данного параметра.

Существуют разные способы установки времени жизни сессий. Попробуем разобраться на примере операционной системы Linux.

Как узнать время жизни сессии

Перед настройкой, стоит посмотреть текущее состояние. Есть несколько методов это сделать:

1. На сервере командой php

Получаем список параметров, имеющих отношение к сессиям. Нас интересуют:

  • session.cookie_lifetime => 0 => 0
  • session.gc_maxlifetime => 1440 => 1440

Данные значения — значение по умолчанию. cookie_lifetime => 0 говорит о действии файлов куки до закрытия браузера, если задать этому параметру определенное значение, сессия будет прерываться при активном сеансе, поэтому лучше ее оставлять в значении ноль.

2. C помощью php-функции ini_get

Настройка сессий на веб-сервере

Выполняется путем настройки файла php.ini. Данный способ удобен, если мы являемся администратором веб-сервера, а также если есть гарантия, что общая настройка сессий не повлияет на работоспособность всех веб-приложений, работающих на данном сервере.

Открываем на редактирование php.ini:

И редактируем следующие параметры:

session.gc_maxlifetime = 86400
session.cookie_lifetime = 0

* где параметр gc_maxlifetime указывает на временя в секундах, после прошествии которого данные могут быть удалены; cookie_lifetime — время жизни файлов cookies; 86400 — 24 часа в секундах.
* если параметру gc_maxlifetime задать значение 0, действие сессий будет бесконечным. Это, как правило, не стоит делать — приведет к падению производительности и безопасности сервера.

Путь до php.ini может быть разный в зависимости от программной платформы и набора компонентов. Например, при использовании php-fpm, путь может быть следующий: /etc/php/7.1/fpm/php.ini. Узнать путь можно командой php -i | grep php.ini

После настройки параметров, необходимо перезагрузить сервер, являющийся интерпретатором PHP.

systemctl restart apache2 || systemctl restart httpd

* в версиях Linux без systemd используем команду service apache2 restart или service httpd restart.

Если используем FastCGI (PHP-FPM):

systemctl restart php-fpm || service php-fpm restart

Настройка через файл .htaccess

Данный файл позволяет веб-мастеру управлять некоторыми настройками веб-сервера. Для его редактирования нужен доступ к файлам сайта. Способ не сработает, если в качестве обработчика PHP используется не Apache, а, например, NGINX + PHP-FPM. Хотя, тут тоже есть способ (о нем будет ниже).

В файл .htaccess вносим следующее:

php_value session.gc_maxlifetime 86400
php_value session.cookie_lifetime 0

* как можно заметить, параметры те же, что при настройки через php.ini.

Как говорилось выше, метод не сработает, если не используется Apache. Однако настройку можно выполнить на сервере (опять же, у нас должен быть соответствующий доступ).

Открываем файл настройки веб-сервера, например, в php-fpm:

php_value[session.gc_maxlifetime] = 86400
php_value[session.cookie_lifetime] = 0

После перезапускаем сервис:

systemctl restart php-fpm || service php-fpm restart

Задание параметра в коде приложения

Способ может быть полезен, когда разные страницы портала должны иметь разное время жизни сессии. Для этого можно воспользоваться PHP-функциями ini_set и session_set_cookie_params, например:

Функции обязательно вызывать до открытия сесии (session_start).

Установка сессии в приложении

Некоторые приложения могут переопределять настройки. В таком случае, задать время жизни сессии необходимо в параметрах программы. У каждого приложения свои настройки, в которых необходимо самостоятельно разобраться. Приведем для примера настройку сессии в CMS Битрикс.

Заходим в Группы пользователей — выбираем группу — Безопасность. Находим параметр «Время жизни сессии (минут)» и ставим время, например 1440 (24 часа в минутах).

Как автоматически продлевать сессии

Если сессия выдается на определенный период и заканчивается в определенное время, это может привести к прерыванию активного сеанса пользователя. Гораздо удобнее, если время действия сессии будет автоматически продлеваться, если посетитель обновляет страницу. Для этого существует параметр cookie_lifetime, который во всех примерах выше мы задавали в значении 0.

Если мы зададим значение cookie_lifetime 86400, то через 24 часа сессия прервется. Это не всегда удобно.

Если есть необходимость в контроле и прерывании сессии, можно воспользоваться php-функцией session_destroy().

Путь хранения файлов сессий

Место хранения файлов сессий задается параметром session.save_path также, так время жизни. По умолчанию, может использоваться путь /var/lib/php/sessions.

Это важный параметр — если у веб-сервера будут отсутствовать права на запись в данный каталог, это приведет к невозможности хранить сессии, что вызовет неожиданные результаты работы приложений.

источник

Добавить комментарий

Adblock
detector