Ваше решение в порядке. У меня есть только несколько очков для вас.
Одной из проблем является длина URL. Разные браузеры имеют разные ограничения. Если вы должны это сделать, и ваши URL-адреса приближаются к 2000 символам, у вас могут возникнуть проблемы. Если имена ваших полей занимают слишком много места, используйте вместо них фиксированный порядок полей. Оставьте поля, которые не нужно ставить в закладки. В крайних случаях рассмотрите возможность использования алгоритма gzip для сжатия длинного URL. Затем перекодируйте эти двоичные данные в base64, используя только символы, допустимые в URL. Это связано со стоимостью некоторого процессорного времени, когда вы снова разархивируете URL при следующем посещении.
Альтернативой является сохранение информации о состоянии в файле или базе данных. Затем вы можете сохранить только идентификатор, необходимый для повторного поиска этой информации в URL.