1
我有一个IPv4地址。防爆。 172.19.20.21
检查IPv4/IPv6地址是否使用PHP
我用来做这
$fs = @fsockopen($ip,$port,$errno,$errstr,3);
if(!$fs){
$error = 'SSC is down';
return Redirect::to('/')->with('error', $error)
->withInput(Request::except('password'));
}
它完美的罚款。
现在,我有一个IPv6地址前缀。 3000::1
if ((strpos($ip, ":") > -1)){
// Code for IPv6 check
$fs = @fsockopen($ip,$port,$errno,$errstr,3);
if(!$fs){
$error = 'SSC is down';
return Redirect::to('/')->with('error', $error)
->withInput(Request::except('password'));
}
}else{
// Code for IPv4 check
$fs = @fsockopen($ip,$port,$errno,$errstr,3);
if(!$fs){
$error = 'SSC is down';
return Redirect::to('/')->with('error', $error)
->withInput(Request::except('password'));
}
}
我可以使用上面的这段代码吗?或者我需要寻找IPv6的其他解决方案?
如果你100%确定你在'$ ip_address'中得到的是IP,这将只区分v4和v6。如果这对你很好,那么这应该工作。 – apokryfos
你的'if'和'else'块是完全相同的,所以你基本上说“如果我不改变我的代码,它是否适用于IPv6?”我的回答是,“你试过了吗?” – IMSoP