У меня есть форма, которая вставляет элементы в базу данных MySQL при отправке.Я решил создать 16-битные идентификаторы для элементов, используя метод random_bytes
в PHP, чтобы при каждой отправке формы я уже знал этот идентификатор и мне не приходилось повторно запрашивать его у базы данных.
Для вставки идентификатора в ссылку на странице, которую я пробовал использовать метод bin2hex
.Это нормально работает правильно.Однако, когда идентификатор имеет конечные нули, метод, кажется, обрезает их (передавая прямой результат метода random_bytes
).На других страницах, где я использую функцию с тем же идентификатором, полученным из базы данных, она не делает этого и работает правильно.
Другими словами, если идентификатор заканчивается на 000, он отображается правильно в шестнадцатеричном представлениикогда bin2hex
вызывается из базы данных, извлекается двоичное представление.Однако нули отсутствуют в шестнадцатеричном представлении, когда функция вызывается на прямом выходе функции random_bytes
.
Вот начальный код:
$uuid = random_bytes(16);
$uuidHex = bin2hex($uuid);
Позже втот же сценарий:
$GLOBALS["ID"] = '0x' . $uuidHex;
сценарий внутри ссылки href
атрибут:
<?php echo $ID; ?>
Вот пример кода, в котором может возникнуть проблема:
0xa87ea4fc142fcdeasjf90j3771eda500