如何获取ADSL的IP地址

来源:互联网 发布:matlab多目标优化函数 编辑:程序博客网 时间:2024/05/08 08:08

如何获取ADSL用户的IP地址,头大啊,请高手解决,
我遇到了一个奇怪的问题,每次获取的是一样的,可我后来插入数据库的就不一样了。

数据库字段是不是有问题 ,还有编码什么的

应该没问题,问题是只要是对方是固定IP就不会出现插进去不一样的问题,我快疯了

你先获取IP然后立即输出看对不对再说。
如果对了,再想插入数据是否存在问题。
贴出带注释的代码。直接进行debug断点调试看看是怎么回事吧

ADSL用户的IP地址 是动态的,每次连接都可能不一样
没有必要保存能获取就行了,保存出问题,当然是你的程序了。

应该是存储到数据库的过程中出了问题!你自己程序问题,干ADSL啥事儿了

程序没问题,固定IP用户的话就很正常,一旦是ADSL用户的话就不行了

不是跟你说了吗?ADSL是动态IP地址。
不能做唯一识别标志

我要做的功能就是要记录IP,以后此IP的人才能访问这个页面的跳转,我用uniqid()函数来生成主键的,而且这样我就生成了上千上万个链接,也就是XXX/?id=uniqid()函数生成的ID,这样产生了很多这样形式的链接,每个链接只准做一次跳转,也就是为了不产生第二次跳转,我就必须记录一个唯一标识来判断,现在只要是固定IP访客可以实现效果,但是ADSL用户连一次跳转都无法实现,因为获取的IP和插入到数据库的IP不一样,奇怪就奇怪在这里,我就很郁闷,而且只要是ADSL用户一点这个页面直接跳到判断IP的那个环节了,第一次应该先要插入IP再跳转,但是只要ADSL就直接跳到判断IP的那个环节了,而且查看数据库已经插入了,很不民百为什么这样。

开始就是这么做的,但是就是不行啊,很奇怪的,ADSL用户,我直接获取IP插入到数据库是对的,可是只要多一个判断的环节就插的IP和获取的IP不一样了.连第一次访问这个连接就无法做跳转。

ADSL每次拨号分配的IP地址都是不一样的 所以不能这样操作的 很多同志已经讲了。

memcache 还要另外安装,本身这样绝对会消耗更多的内存资源的。
我没打算用它,我现在用的就是mysql的内存表来放session的,

不要使用数据库,1w用户记录ip、访问时间、用户名这几项20个byte应该足够了,20×10000 / 1000也就200k内存,生成一个二叉树就可以了。

如果只是表现是否在线,楼上的方法或是可取的

因为在线只是一种状态,并不需要真实记录数据库, 但如果你要统计这个用户在线了多少时间,则可能是另一种设计

如果只是显示状态, 实际上并不需要对这些记录做备份留存,共享内存理论上可以解决.



但如果用数据库,确实有连接太多的问题, 一般的并发量500计,它只能支持500并发.所以,当峰值超过500时,要么就是分负载(10000的要20个),要么就是让其等待排队.
如果你有10000用户,同时请求,但记录是5分钟一次,实际上10000/60/5 =33,每秒33次请求.如果你的数据查询不超过1秒.一般没有问题,但如果每次连接超过1秒,如2秒.则只能负载66次. 其他类推.

事实上你的数据库还有很多其他的操作.
来源:英超直播

原创粉丝点击