Функция 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 minutes read Administrator

Comments (0)

No comments yet
Only registered users can post new comments

Article multicategories

Additional categories where this article is shown as similar.

Content author

Administrator

Offline

Administrator

Last logged: 2026-09-13 14:50

  • Page published: 2025-01-21 11:24
  • Last update: 2025-01-21 11:24