Intereting Posts
Как избежать символов Junk / garbage при чтении данных с нескольких языков? Как размножить интервал по идентификатору с помощью JavaScript? Удалите белый фон с изображения и сделайте его прозрачным с помощью PHP Разница в подключении функций mysql? Как автоматически удалить сеанс через 5 минут бездействия на веб-сайте в php Запуск mySQL-запроса в качестве задания cron? Использование слизней в кодеригенере Почему мой сайт всегда использует ErrorController для всех типов ошибок независимо от кода состояния HTTP? Стоит ли создавать и устанавливать методы в ООП? Веб-профайлер не отображается в dev Тестирование Laravel с помощью PHPUnit и Mockery – Настройка зависимостей от теста Controller PHPMailer использовать Gmail как SMTP-сервер. Не удалось подключиться к узлу SMTP. Ошибка Mailer: ошибка SMTP: не удалось подключиться к SMTP-хосту Многострочный массив файлов PHP Производительность: если else vs switch, а vs for, для каждого vs for, print vs printf Как включить вывод скрипта Perl на страницу PHP?

Загружать session_start () только в том случае, если сеанс не существует?

есть ли короткий трюк кода, чтобы проверить, запущен ли сеанс, а если нет, то загрузите его? В настоящее время я получаю сообщение об ошибке «session уже начал …», если я включил сеанс, независимо от проверки.

Related of "Загружать session_start () только в том случае, если сеанс не существует?"

isset как правило, является правильным способом проверить, определены ли в настоящее время предопределенные переменные:

Если вы используете версию php до 5.4 ,

вы, возможно, избегаете и заманчиво выполняете код ниже, но имейте в виду, что если по какой-то причине сеансы отключены, session_start () все равно будет вызван, что может привести к ошибкам и ненужной отладке, поскольку массив $ _SESSION isn 't позволили быть созданы.

 if(!isset($_SESSION)){session_start();} 

если вы хотите узнать, проверяет, отключены ли сеансы по какой-либо причине, вы можете подавить сообщение об ошибке, установить переменную тестового сеанса, а затем проверить, была ли она установлена. Если это не так, вы можете запрограммировать реакцию на сеансы с отключенным доступом. Вы захотите сделать все это в начале сценария или рядом с ним. Так, например, (работает по-разному в зависимости от настройки обработки ошибок):

 if(!isset($_SESSION)){session_start();} $_SESSION['valid'] = 'valid'; if($_SESSION['valid'] != 'valid') { //handle disabled sessions } 

Однако, если вы используете php версии 5.4 или выше ,

Вы можете использовать функцию session_status () , лучший вариант, поскольку он учитывает отключенные сеансы и проверяет, существует ли сеанс.

 if (session_status() === PHP_SESSION_NONE){session_start();} 

Обратите внимание, что PHP_SESSION_NONE является константой, заданной PHP, и поэтому ее не нужно обматывать кавычками. Он оценивает целое число 1, но поскольку его константа, специально предназначенная для устранения потребности в магических числах, лучше всего проверять на константу.

Многие люди просто используют @session_start() для подавления предупреждения о том, что сеанс уже запущен. Альтернативой обычно является:

 if (session_status() === PHP_SESSION_NONE) session_start(); 
 if (version_compare(phpversion(), '5.4.0', '<')) { if(session_id() == '') { session_start(); } }else{ if (session_status() == PHP_SESSION_NONE) { session_start(); } } 
 if (session_id() === "") { session_start(); } 

Проверка существующего сеанса перед запуском нового:

  // # if phpversion() is >= 5.4 if(phpversion() >= 5.4) { // # check session_status() function for value 'PHP_SESSION_NONE' if(session_status() === PHP_SESSION_NONE) { session_start(); } } else { // # maintain backwards compat. with PHP versions older than 5.4 // # if $_SESSION object if NOT set, start a new session! if(!isset($_SESSION)) { session_start(); } }