Док говорит
session_create_id()
используется для создания нового идентификатора сеанса для текущего сеанса.
session_regenerate_id()
Обновите текущий идентификатор сеанса с новым сгенерированным.
Есть ли разница между этими двумя функциями?
Да, есть разница, session_create_id()
создаст новый sessionId, отбрасывающий текущий $_SESSION
информация, где как session_regenerate_id()
не уничтожает их, а просто обновляет sessionId
Приведено из: http://php.net/manual/en/function.session-create-id.php & http://php.net/manual/en/function.session-regenerate-id.php
Создать новый идентификатор сессии
Обновите текущий идентификатор сеанса с новым сгенерированным
Пример использования из руководства:
$old_sessionid = session_id();
// Set destroyed timestamp
$_SESSION['destroyed'] = time(); // Since PHP 7.0.0 and up, session_regenerate_id() saves old session data
// Simply calling session_regenerate_id() may result in lost session, etc.
// See next example.
session_regenerate_id();
// New session does not need destroyed timestamp
unset($_SESSION['destroyed']);
$new_sessionid = session_id();
echo "Old Session: $old_sessionid<br />";
echo "New Session: $new_sessionid<br />";
print_r($_SESSION);
Что приводит нас к следующему вопросу — почему и когда вы должны его использовать, есть подробный ответ в эта ссылка.