Проверка начала сеанса

У меня есть эта функция:

public static function sessionStart()
{
try {
if (ini_get('session.use_cookies') && isset($_COOKIE['PHPSESSID'])) {
$sessid = $_COOKIE['PHPSESSID'];
} elseif (!ini_get('session.use_only_cookies') && isset($_GET['PHPSESSID'])) {
$sessid = $_GET['PHPSESSID'];
} else {
session_start();
return false;
}

if (preg_match('/[^a-zA-Z0-9\-]{32}/i', $sessid)) {
return false;
}
session_start();

return true;
} catch (Exception $ex) {
return false;
}
}

Однако в некоторых случаях session_start все еще выдает предупреждение. Как я могу проверить идентификатор сессии, чтобы никогда не получать предупреждения? Проблема начала нарастать, когда я изменил версию PHP с 5.3 на 5.6.

Предупреждение:

Идентификатор сеанса слишком длинный или содержит недопустимые символы, допустимый
символы a-z, A-Z, 0-9 и ‘-,’

0

Решение

Одним из решений является использование PHP оператор контроля ошибок:

@session_start();

Если вы хотите проверить правильность запуска, просто верните bool из этого:

return @session_start();

(Как указано в документация🙂

Эта функция возвращает TRUE, если сессия была успешно запущена, иначе FALSE.

Также кажется, что ваша функция проверки регулярных выражений также неверна, я обновил ее ниже:

!preg_match('/^[a-z0-9\-]{32}$/i', $sess)

Вы можете увидеть результаты Вот.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]