请问php如何能在每个请求中判断客户端IP地址?
程序员文章站
2022-03-11 17:17:12
...
我们要做对每个请求进行IP校验的功能,即要识别出用户登录后IP是否发生变动。
想在c层的PHP_RINIT_FUNCTION中实现,但是在C库里没有找到能够获取客户端IP的接口。
php层能通过$_SERVER['REMOTE_ADD']获取,但是php代码没有一个统一的入口,要去给现有的所有html、php、js增加判断。
请教各位大虾,有没有什么好办法去实现这个功能?
感谢版主回复,php有没有提供C的接口?或者涉及php哪部分代码,我去看看?
毕竟PHP的代码在c部分的PHP_RINIT_FUNCTION中不能直接调用,还是需要c的接口。
刚看了下php源码,通过zend hash可以找到$_SERVER['REMOTE_ADD']的值。搞定了。
多谢吧主
想在c层的PHP_RINIT_FUNCTION中实现,但是在C库里没有找到能够获取客户端IP的接口。
php层能通过$_SERVER['REMOTE_ADD']获取,但是php代码没有一个统一的入口,要去给现有的所有html、php、js增加判断。
请教各位大虾,有没有什么好办法去实现这个功能?
回复讨论(解决方案)
但 HTTP_REMOTE_ADD 是 CGI 网关的环境变量,php 只是将他放在 $_SERVER['REMOTE_ADD'] 中而已
用 c 自然是能获取到的
但 HTTP_REMOTE_ADD 是 CGI 网关的环境变量,php 只是将他放在 $_SERVER['REMOTE_ADD'] 中而已
用 c 自然是能获取到的
感谢版主回复,php有没有提供C的接口?或者涉及php哪部分代码,我去看看?
你C中的不就是php代码?用$_SERVER['REMOTE_ADD'] 就能获取了还要怎样?
你C中的不就是php代码?用$_SERVER['REMOTE_ADD'] 就能获取了还要怎样?
毕竟PHP的代码在c部分的PHP_RINIT_FUNCTION中不能直接调用,还是需要c的接口。
刚看了下php源码,通过zend hash可以找到$_SERVER['REMOTE_ADD']的值。搞定了。
多谢吧主