Php 我是否可以确保用户在表单中输入ip地址

Php 我是否可以确保用户在表单中输入ip地址,php,regex,Php,Regex,我试图弄清楚如何确保用户使用PHP以HTML形式输入ip地址。我是全新的PHP。。。我知道在Python中我可以使用正则表达式。但是,如果可以的话,我如何在PHP中实现这一点呢 表格样本: <form name="form1" method="post" action="connection.php"> <label>Login: <input type="text" name="ipaddress" onclick="this.value='';"

我试图弄清楚如何确保用户使用PHP以HTML形式输入ip地址。我是全新的PHP。。。我知道在Python中我可以使用正则表达式。但是,如果可以的话,我如何在PHP中实现这一点呢

表格样本:

 <form name="form1" method="post" action="connection.php">
   <label>Login:
   <input type="text" name="ipaddress" onclick="this.value='';" onfocus="this.select()" onblur="this.value=!this.value?'Enter IP Address':this.value;" value="Enter IP Adress"/>
   </label>
   <label>
   <input type="submit" value="Connect"/>
   </label>

登录:

如php手册所述,您可以使用:

<?php
// make sure IPs are valid. also converts a non-complete IP into
// a proper dotted quad as explained below.
$ip = long2ip(ip2long("127.0.0.1")); // "127.0.0.1"
$ip = long2ip(ip2long("10.0.0")); // "10.0.0.0"
$ip = long2ip(ip2long("10.0.256")); // "10.0.1.0"
?>

因此,要检查ip是否正确,请使用以下代码(感谢Puggan Se):


如php手册所述,您可以使用:

<?php
// make sure IPs are valid. also converts a non-complete IP into
// a proper dotted quad as explained below.
$ip = long2ip(ip2long("127.0.0.1")); // "127.0.0.1"
$ip = long2ip(ip2long("10.0.0")); // "10.0.0.0"
$ip = long2ip(ip2long("10.0.256")); // "10.0.1.0"
?>

因此,要检查ip是否正确,请使用以下代码(感谢Puggan Se):


试试这个: 试试这个:

有趣的是,使用HTML5,您可以在
上使用带有正则表达式的
模式=“([0-9]+\xe2){3}[0-9]+”


另一方面,在PHP中,您也可以使用Cory发布的内容。

有趣的是,在HTML5中,您可以使用正则表达式在
上使用
模式=“([0-9]+\xe2){3}[0-9]+”
来验证字段


另一方面,在PHP中,您也可以使用Cory发布的内容。

或者您可以使用PHP的filter\u var函数

然后使用FILTER\u VALIDATE\u IP验证输入

示例(返回布尔值,真/假):


或者可以使用PHP的filter_var函数

然后使用FILTER\u VALIDATE\u IP验证输入

示例(返回布尔值,真/假):


不,由于错误处理,将无法工作。。只要试试像echo long2ip(ip2long(“127.0.0.1xx”))这样的东西所以使用:如果($ip==long2ip(ip2long($ip))不,因为错误处理而不起作用。只需尝试类似于
echo long2ip(ip2long(“127.0.0.1xx”);
所以使用:如果($ip==long2ip(ip2long($ip))的东西。
133169153
(十进制)和
0774000001
(八进制)就TCP堆栈而言,与
127.0.0.1
完全相同,PHP也支持regexp,但您的问题可以通过JavaScript解决?ajreal,不要完全依赖客户端验证,不要忘记IP只是32或128位数字。
133169153
(十进制)和
0774000001
(八进制)就TCP堆栈而言,与
127.0.0.1
完全相同,PHP也支持regexp,但您的问题可以通过JavaScript解决?ajreal,不要完全依赖客户端验证
function isIP($ip)
{
 return filter_var($ip, FILTER_VALIDATE_IP);
}