У меня есть набор из 5 динамических c идентификаторов, которые я хочу закодировать как один отдельный идентификатор и передать его в качестве параметра GET. То, что я делаю сейчас, в основном:
$ids = [
'user_id' => $request->get('user_id'),
'country_id' => $request->get('country_id'),
'type_id' => 1,
'some_other_id' => $request->get('some_other_id'),
'something_else' => 2,
];
$encoded_id = Cypher::encodeString(json_encode($ids));
return redirect()->away("https://somedomain.com/?id=$encoded_id");
И позже, когда я получаю запрос, я могу декодировать его:
try {
$ids = Cypher::decodeString($request->get('id'));
echo $ids['country_id'];
} catch (\Exception $e) {
...
}
Проблема в том, что выходная закодированная строка имеет 304 символа, поэтому может случиться так, что URL будет слишком длинным:
https://somedomain.com/?id=eyJpdiI6Ilk0YkVOSUFqUPJLZ1ZGcXNPY8pkOXc9PSIsInZhbHVlIjoieGFVUlNFdlNGSk1wWm1BcE5HREZTMHhxNnZMVktDZ0dCR1RQSk9vZnFASTJTZjZtUGg5cFFtK2FXTCtxOFNlMVM1MU8yTVpyN1wvTFJNNDF1Q1F0Zlwvd0JzaWFCR2NWbTJkM3dxUGtqR21Kcz0iAwJtYWMiOiJlMzdjOWU4NzBjNGI0MGNlNzA1NzVjZWY2ZDI3YWQ0MmMxOWJkOWI4MTQwOGQ5ODc3OTBjMzUwMzViZWY2YjMwIn0=
То, чего я хотел бы достичь, выглядит как-то короче:
https://somedomain.com/?id=eyJpdiI6Ilk0YkVOSUFqUPJLZ1ZGcXNPY8pkOXc9PSIsInZhbHVlIjoieGFVUlN
, который я мог бы легко декодировать ,
Я не особо беспокоюсь о строгой безопасности здесь, там всего несколько удостоверений личности. Для меня важнее «удобная для пользователя» закодированная строка и возможность быстро ее кодировать / декодировать. Я думал о создании карты ha sh, но для этого будет слишком много данных. Как я могу это сделать?