我有一个表单,可以在提交时将项目插入 MySQL 数据库。我决定使用random_bytes
PHP 中的方法为项目创建 16 位 ID,这样每次提交表单时我就已经知道 ID,而不必为它重新查询数据库。
为了将 ID 插入到页面中的链接中,我尝试使用该bin2hex
方法。这通常可以正常工作。但是,当 ID 有尾随零时,该方法似乎将它们切断(传递该random_bytes
方法的直接结果)。在我在从数据库中检索到的同一 ID 上使用该函数的其他页面中,它没有执行此操作并且可以正常工作。
换句话说,如果 ID 以 000 结尾,则bin2hex
在数据库检索到的二进制表示上调用时,它会以十六进制表示正确显示。但是,当函数在函数的直接输出上调用时,十六进制表示中缺少零random_bytes
。
这是初始代码:
$uuid = random_bytes(16);
$uuidHex = bin2hex($uuid);
稍后在同一个脚本中:
$GLOBALS["ID"] = '0x' . $uuidHex;
href
链接属性内的脚本:
<?php echo $ID; ?>
以下是会出现问题的示例 ID:
0xa87ea4fc142fcdeasjf90j3771eda500