Функция cot_importBufferKey в Cotonti

Функция cot_importBufferKey генерирует уникальный хеш (ключ) для текущего URI запроса, который можно использовать для идентификации данных в буфере сессии. Это полезно, например, для ассоциирования данных формы с конкретным запросом.

Код функции

function cot_importBufferKey($uri)
{
    $parsedUri = parse_url($uri);
    $path = trim($parsedUri['path'], '/');
    $query = [];
    if (!empty($parsedUri['query'])) {
        parse_str($parsedUri['query'], $query);
    }

    $normalisedUri = $path;
    if (!empty($query)) {
        // Strip ajax param from the query
        unset($query['_ajax']);
        ksort($query);
        $normalisedUri .= '?' . http_build_query($query);
    }

    return md5($normalisedUri);
}

 

Описание и разбор функции:


cot_importBufferKey($uri)

Логика работы:
Парсинг URI:

Функция сначала использует parse_url() для разбора переданного URI ($uri) на части, такие как путь и параметры запроса. Это нужно для нормализации URI и удаления лишних данных.
Получение пути:

$parsedUri['path'] — это путь, извлечённый из URI (например, /some/path).

Путь обрабатывается методом trim(), чтобы удалить любые лишние косые черты (/) в начале и в конце строки.

Обработка параметров запроса:

Если в URI есть параметры запроса, они извлекаются с помощью parse_str().
Параметры запроса сохраняются в массив $query.

Нормализация URI:

Путь ($path) добавляется в строку $normalisedUri.
Если параметры запроса существуют, из них удаляется параметр _ajax, если он присутствует (чтобы исключить влияние на хеш).
Параметры запроса сортируются по ключу с помощью ksort(), чтобы избежать влияния порядка параметров на итоговый хеш.
Параметры запроса добавляются в $normalisedUri в виде строки.

Генерация хеша:

Итоговая строка нормализованного URI передается в функцию md5(), которая возвращает хеш. Это хеш будет использоваться как уникальный ключ для хранения данных в буфере.
Примечания:
Идентификация запросов: Этот хеш помогает отслеживать уникальность запросов, несмотря на возможные изменения в параметрах запроса (например, в случае с AJAX-запросами).
Удаление параметра _ajax: Параметр _ajax удаляется, чтобы избежать его влияния на хеш, что полезно, если на один и тот же путь отправляются запросы как через AJAX, так и без.
Сортировка параметров: ksort() гарантирует, что параметры запроса всегда будут идти в одном и том же порядке при расчете хеша, что предотвращает различия в хешах из-за порядка параметров.


Пример использования этой функции:

$uri = 'https://example.com/some/path?param1=value1&_ajax=true&param2=value2';

$bufferKey = cot_importBufferKey($uri);

echo $bufferKey;  // Уникальный хеш для данного URI


Потенциальные улучшения:

Проверка на корректность URI: Может быть полезно добавить дополнительные проверки на корректность переданного URI перед его парсингом.

Обработка фрагментов URI: В текущей реализации фрагменты (часть URI после #) игнорируются.
Если требуется учитывать фрагменты в хеше, можно добавить обработку $parsedUri['fragment'].

2 минут чтения Administrator

Комментарии (0)

Комментарии отсутствуют
Добавление комментариев доступно только зарегистрированным пользователям

Автор контента

Administrator

Оффлайн

Administrator

Последняя авторизация: 05.07.2026 18:32

  • Страница размещена: 21.01.2025 11:24
  • Последнее обновление: 21.01.2025 11:24