在仔细搜索之后,我注意到PHP中用于处理IPv6的功能略有不足.为了我个人的满意,我创建了一些功能来帮助过渡.
该IPv6ToLong()函数是此处提出的临时解决方案:如何在关系数据库中存储与IPv6兼容的地址.它会将IP分成两个整数并将它们返回一个数组.
/**
* Convert an IPv4 address to IPv6
*
* @param string IP Address in dot notation (192.168.1.100)
* @return string IPv6 formatted address or false if invalid input
*/
function IPv4To6($Ip) {
static $Mask = '::ffff:'; // This tells IPv6 it has an IPv4 address
$IPv6 = (strpos($Ip, '::') === 0);
$IPv4 = (strpos($Ip, '.') > 0);
if (!$IPv4 && !$IPv6) return false;
if ($IPv6 && $IPv4) $Ip = substr($Ip, strrpos($Ip, …Run Code Online (Sandbox Code Playgroud) 我有一个现有的php web应用程序,我在IPv4上,我怎么能伪造IPv6地址来测试应用程序与它的兼容性?或者有更好的方法来测试IPv6兼容性吗?
更新:我的应用程序在进行某些操作时记录用户的IP.IP地址存储在数据库中(从另一个问题我可以理解,BINARY是最好的列类型).应用程序也应该可以通过IP进行搜索.
我希望apache/php能像我使用IPv6一样工作,我需要确保我的应用程序与IPv6的兼容性已准备好在IPv4网络+ IPv6网络上进行生产.