就是验证个形式,你想怎么改?

jat001 at 2013-05-07 18:53
1

ip地址是有规则的, 255是最大了。 我没别的意思, 就是看见了, 提醒一下

司博文 at 2013-05-07 19:00
2

@司博文 欢迎贡献一个更好的。

ego008 at 2013-05-07 19:24
3

/((([1-9])|((0[1-9])|([1-9][0-9]))|((00[1-9])|(0[1-9][0-9])|((1[0-9]{2})|(2[0-4][0-9])|(25[0-5])))).)((([0-9]{1,2})|(([0-1][0-9]{2})|(2[0-4][0-9])|(25[0-5]))).){2}(([1-9])|((0[1-9])|([1-9][0-9]))|(00[1-9])|(0[1-9][0-9])|((1[0-9]{2})|(2[0-4][0-9])|(25[0-5])))/

以前写的, 测试过, 可能还存在错误, 但仅供参考。

司博文 at 2013-05-07 20:08
4

@司博文 BAE 上只有 HTTP_X_FORWARDED_FOR 能获得用户的真实 ip,而 HTTP_X_FORWARDED_FOR 是可以伪造的,这里的判断只是为了防止 SQL 注入。 如果不是伪造的,根本不需要判断;如果是伪造的,符合 ipv4 又有什么意义? 越复杂的正则越容易出问题,也降低了程序效率。

jat001 at 2013-05-07 20:40
5

@jat001 恩,学习了。 谢谢大神。

司博文 at 2013-05-07 20:54
6

@jat001 顺便在这里再说一下上次提到的《关于 HTTP_X_FORWARDED_FOR》 https://www.youbbs.org/t/1012 的注入问题,在7 楼回复里已提到,目前还没有把用户ip 的变量加入到sql 语句中,这样被注入的风险应该很小。

顺便贴一个阅读时看到的简单正则 preg_match("/[\d.]{7,15}/", $realip, $onlineip);

ego008 at 2013-05-07 21:09
7

@ego008 学习了。谢谢大神。嘿嘿

司博文 at 2013-05-07 21:13
8

@ego008 我计划加个记录用户 ip 的功能,所以这里做了判断

jat001 at 2013-05-07 21:24
9

@jat001 网上获取到的用户ip有时候不是真实的用户ip, 我们学校的出口IP都一个样。

司博文 at 2013-05-07 21:26
10

@司博文 就是为了获取这个出口 ip,其他获取 ip 的方式在 BAE 上都只能获取 BAE的内网 ip。

jat001 at 2013-05-07 21:27
11

@jat001 哦。了解

司博文 at 2013-05-07 21:29
12
登录 后发表评论