我正在开发一个将 IPv4 网络存储在数据库中的项目,该网络在一个列中存储为无符号整数,在另一列中存储位掩码长度 (cidr)。每个网络都由用户“拥有”(指向“用户”表的无符号整数)。子网也以分层方式排列,例如
1.0.0.0/16 - 归用户“A”所有 1.0.1.0/24 - 由用户“B”拥有 1.0.2.0/24 - 由用户“C”拥有 1.0.2.0/26 - 由用户“D”拥有 1.0.3.0/24 - 归用户“E”所有
ETC
现在棘手的一点来了,因为每个用户都应该能够查看/编辑他们下的所有子网,所以上面的用户“A”可以访问所有显示的子网,用户 C 可以访问 1.0.2.0/24 和 1.0.2.0/26 等等上。树中的级别数是可变的,并且仅受位掩码的最大长度限制,因此理论上您可以:
1.0.0.0/8 1.0.0.0/9 1.0.0.0/10 1.0.0.0/11 ......
一直到 1.0.0.0/32,每个连续的“所有者”都能够访问它们下的所有子网。
关于将其存储在 MySQL 中的最佳方式的任何建议?以及确定特定用户是否应该有权访问特定网络的最佳方法,使用 PHP。
谢谢