Pages (41) « Prev 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 Next »

IP的归属地问题探密,PHP的IP位置转换

首先、确定两点,第一,取IP,第二,取IP位置,第三,程序语言,php

这样我们就清晰多了。关键就是通过php取IP了。baidu一下可获得以下函数

$_SERVER["REMOTE_ADDR"];

其次,就是转换IP到位置。由IP到位置,只需要在某一个已经写定的数据表中查询即可。因此我们需要一个数据库,我使用的是纯真IP数据库。

如何能完成之间的转换呢?其实只是一个算法的问题,对于很多朋友来说,并非都是程序人员,很难自己去编写算法,所以本人就使用了一个窍门。

引子:做过discuz论坛的朋友都知道,论坛有统计IP并显示来路的功能,程序语言是php,本人查看后结论是,discuz的IP数据库是纯真IP,因此只需要把程序拿出来就可以了。

经过查找,发现IP转换位置程序如下:

function convertip($ip) {

    if(!preg_match("/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/", $ip)) {

        return '';

    }

    if($fd = ','fopen('ipdata/wry.dat', 'rb')) {          //IP数据库位置

        $ip = explode('.', $ip);

        $ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];

        $DataBegin = fread($fd, 4);

        $DataEnd = fread($fd, 4);

        $ipbegin = implode('', unpack('L', $DataBegin));

        if($ipbegin < 0) $ipbegin += pow(2, 32);

        $ipend = implode('', unpack('L', $DataEnd));

        if($ipend < 0) $ipend += pow(2, 32);

        $ipAllNum = ($ipend - $ipbegin) / 7 + 1;

        $BeginNum = 0;

        $EndNum = $ipAllNum;

        while($ip1num > $ipNum || $ip2num < $ipNum) {

            $Middle= intval(($EndNum + $BeginNum) / 2);

            fseek($fd, $ipbegin + 7 * $Middle);

            $ipData1 = fread($fd, 4);

            if(strlen($ipData1) < 4) {

                fclose($fd);

                return 'System Error';

            }

            $ip1num = implode('', unpack('L', $ipData1));

            if($ip1num < 0) $ip1num += pow(2, 32);

            if($ip1num > $ipNum) {

                $EndNum = $Middle;

                continue;

            }

            $DataSeek = fread($fd, 3);

            if(strlen($DataSeek) < 3) {

                fclose($fd);

                return 'System Error';

            }

            $DataSeek = implode('', unpack('L', $DataSeek.chr(0)));

            fseek($fd, $DataSeek);

            $ipData2 = fread($fd, 4);

            if(strlen($ipData2) < 4) {

                fclose($fd);

                return 'System Error';

            }

            $ip2num = implode('', unpack('L', $ipData2));

            if($ip2num < 0) $ip2num += pow(2, 32);

            if($ip2num < $ipNum) {

                if($Middle == $BeginNum) {

                    fclose($fd);

                    return 'Unknown';

                }

                $BeginNum = $Middle;

            }

        }

        $ipFlag = fread($fd, 1);

        if($ipFlag == chr(1)) {

            $ipSeek = fread($fd, 3);

            if(strlen($ipSeek) < 3) {

                fclose($fd);

                return 'System Error';

            }

            $ipSeek = implode('', unpack('L', $ipSeek.chr(0)));

            fseek($fd, $ipSeek);

            $ipFlag = fread($fd, 1);

        }

        if($ipFlag == chr(2)) {

            $AddrSeek = fread($fd, 3);

            if(strlen($AddrSeek) < 3) {

                fclose($fd);

                return 'System Error';

            }

            $ipFlag = fread($fd, 1);

            if($ipFlag == chr(2)) {

                $AddrSeek2 = fread($fd, 3);

                if(strlen($AddrSeek2) < 3) {

                    fclose($fd);

                    return 'System Error';

                }

                $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));

                fseek($fd, $AddrSeek2);

            } else {

                fseek($fd, -1, SEEK_CUR);

            }

            while(($char = fread($fd, 1)) != chr(0))

                $ipAddr2 .= $char;

            $AddrSeek = implode('', unpack('L', $AddrSeek.chr(0)));

            fseek($fd, $AddrSeek);

            while(($char = fread($fd, 1)) != chr(0))

                $ipAddr1 .= $char;

        } else {

            fseek($fd, -1, SEEK_CUR);

            while(($char = fread($fd, 1)) != chr(0))

                $ipAddr1 .= $char;

            $ipFlag = fread($fd, 1);

            if($ipFlag == chr(2)) {

                $AddrSeek2 = fread($fd, 3);

                if(strlen($AddrSeek2) < 3) {

                    fclose($fd);

                    return 'System Error';

                }

                $AddrSeek2 = implode('', unpack('L', $AddrSeek2.chr(0)));

                fseek($fd, $AddrSeek2);

            } else {

                fseek($fd, -1, SEEK_CUR);

            }

            while(($char = fread($fd, 1)) != chr(0))

                $ipAddr2 .= $char;

        }

        fclose($fd);

        if(preg_match('/http/i', $ipAddr2)) {

            $ipAddr2 = '';

        }

        $ipaddr = "$ipAddr1 $ipAddr2";

        $ipaddr = preg_replace('/CZ88\.NET/is', '', $ipaddr);

        $ipaddr = preg_replace('/^\s*/is', '', $ipaddr);

        $ipaddr = preg_replace('/\s*$/is', '', $ipaddr);

        if(preg_match('/http/i', $ipaddr) || $ipaddr == '') {

            $ipaddr = 'Unknown';

        }

        return $ipaddr;

    } else {

        $datadir = 'ipdata/';

        $ip_detail = explode('.', $ip);

        if(file_exists($datadir.$ip_detail[0].'.txt')) {

            $ip_fdata = ','fopen($datadir.$ip_detail[0].'.txt', 'r');

        } else {

            if(!($ip_fdata = ','fopen($datadir.'0.txt', 'r'))) {

                return 'Invalid IP data file';

            }

        }

        for($i = 0; $i <= 3; $i++) {

            $ip_detail[$i] = sprintf('%03d', $ip_detail[$i]);

        }

        $ip = join('.', $ip_detail);

        do {

            $ip_data = fgets($ip_fdata, 200);

            $ip_data_detail = explode('|', $ip_data);

            if($ip >= $ip_data_detail[0] && $ip <= $ip_data_detail[1]) {

                fclose($ip_fdata);

                return $ip_data_detail[2].$ip_data_detail[3];

            }

        } while(!feof($ip_fdata));

        fclose($ip_fdata);

        return 'UNKNOWN';

    }

}

保存成php文件,直接require "XXX.php";调用即可。

OK。目前我们已经能找到位置了,下面做一个查询的页面即可。

<?php

$ip=$_REQUEST[url];

require "XXX.php";

$cip = $_SERVER["REMOTE_ADDR"];

$clo = convertip($cip);

echo "您的IP是{$cip},来自{$clo}";

?>

<form action="">

<input type="text" name="url" size="20" value="<?echo $ip;?>"> <input type="submit" value="查看ip位置">

</form>

<?php

if($ip==""){$ip="";}else {

$lo = convertip($ip);

echo "<br><br>您查询的IP是{$ip},来自<font color=blue>{$lo}</font>";

}

?>

oracle存储过程

为公司写的,放在这里留个脚印,怕忘了。

create or replace procedure insertToForDay

AS

---声明:一天中PV和IP的总数---

countPV count_list.list_pv%type;

countIP count_list.list_IP%type;

---设置查询PV游标---

CURSOR listCurPV IS

  Select sum(list_pv) as countPV

  From Count_list

  where to_char(LIST_TIME,'yyyy-mm-dd') like '%2007-07-13%';

  

---设置查询IP游标---

CURSOR listCurIP IS

  Select count(list_IP) as countPV

  From Count_list

  where to_char(LIST_TIME,'yyyy-mm-dd') like '%2007-07-13%';

  

  

---设置查询SEQ游标---

CURSOR curSEQ is

  select list_seq, count(list_ip) as SEQ_IP, sum(list_pv) as SEQ_PV

  from count_list

  where to_char(LIST_TIME,'yyyy-mm-dd') like '%2007-07-13%'

  group by list_seq;

  

  Fc1SEQ varchar2(10);

  Fc2SEQ varchar2(10);

  Fc3SEQ varchar2(10);

  sSEQ varchar2(4000);

  

  

---设置查询Article游标---

CURSOR curArticle is

  select Article_ID, count(list_ip) as SEQ_IP, sum(list_pv) as SEQ_PV

  from v_count_article_forday

  where to_char(LIST_TIME,'yyyy-mm-dd') like '%2007-07-13%'

  group by Article_ID;

  

  Fc1Article varchar2(10);

  Fc2Article varchar2(10);

  Fc3Article varchar2(10);

  sArticle varchar2(4000);

 

 

begin

---将取得的SEQ形成数组---

 open curSEQ ;

 loop

  fetch curSEQ into fc1SEQ,Fc2SEQ,fc3SEQ;

  exit when curSEQ%notfound;

  sSEQ:=sSEQ||fc1SEQ||','||fc2SEQ||','||fc3SEQ||'|';

 end loop;

 close curSEQ;

 sSEQ:=substr( sSEQ,1,length(sSEQ)-1);

---end ---

---将取得的Article形成数组---

 open curArticle ;

 loop

  fetch curArticle into fc1Article,Fc2Article,fc3Article;

  exit when curArticle%notfound;

  sArticle:=sArticle||fc1Article||','||fc2Article||','||fc3Article||'|';

 end loop;

 close curArticle;

 sArticle:=substr( sArticle,1,length(sArticle)-1);

---end ---

 

 open listCurPV;  --打开PV游标

 open listCurIP;  --打开IP游标

 ---将游标取得的值放入变量中

 FETCH listCurPV into countPV;

 FETCH listCurIP into countIP;

  

 dbms_output.put_line('countPV:'||countPV||'countIP:'||countIP||'sSEQ-------'||sSEQ||'sArticle------'||sArticle);

 insert into count_ForDay VALUES (SEQ_FORDAY.nextval,SYSDATE,countIP,countPV,sSEQ,sArticle);

 

 

 

 --关闭游标 

 close listCurPV;

 close listCurIP;

 

 

end insertToForDay;

[转载]如何健康活到100岁

《别让医生杀了你》:本书作者Vernon Coleman是英国著名医学博士,英国BBC卫生节目主持人,名誉科学博士,至今已写了90多本书,被译为22种文字,畅销50多个国家。在英国,他被视为国宝、保健运动先驱、最博学的医疗顾问。他的医疗热线,牵动了十分之一的英国家庭;他的专栏文章,吸引了全世界数百万读者。有人说,他可能是当今世界上最著名的大众健康书籍作者。

这里有47条健康活到100岁的秘诀(如果你按照它们行动的话)!

1.别赖床。百岁老人都是无可争议的早起者!

2.别吃得太多。食物的种类很重要,但饮食的量同样重要。过度饮食给身体增加了负担,并导致肥胖(公认的健康杀手之一)。

3.心情舒畅。

4.少量饮酒,酒精过量会损害健康。

5.别过多地怀旧。

6. 要有事做,生活充实。

7. 尽可能地独立。做你自己的主人。你越是能掌握自己的命运。你的身体就越健康。

8. 尽量少吃药。经常吃药(不管是医生的处方药还是从药房购买的药物)都将给你的身体带来损害。

9. 别对你的健康问题过度担心。如果你老是认为自己得了病。那么你可能会真的得病。在健康长寿的人群中,很少有人担心疾病或者死亡---他们总是以积极的态度面对生活。

10.避免频繁节食。体重经常处于波动状态对你的健康极其不利。

11.别吸烟。与吸烟的人保持一定距离,被动吸烟对健康的影响是很大的。

12.发展一种真正适合你自己的嗜好,并以极大的热情投人进去。

13.避免食用高糖食物。

14.避免进食高脂肪食品。

15.吃大量的蔬菜和水果,少吃那些袋装的方便食品。

16.少吃肉。过量肉类会引起癌症,而且肉类对于你的身体来说并非一定是必要的。

17.常跟和你关系密切的人一起交流你的想法,别把你的念头封闭在脑海里。如果你认为哭一场对自己有好处,那就哭吧;要是你感到愤怒,那就放声嚷嚷,宣泄你的情感吧。

18.每天对自己的至爱至少说一次”我爱你”。如果能得到同样的回报就再好不过了。这简单的3个字会使你觉得在这个世界上你不显得多余。

19.每周至少锻炼3次,最好是每天锻炼。较好的运动形式有行走、骑车、游泳和跳舞。适量运动会给你带来快乐。而且它强度适中,不至于给你带来损伤。

20.每周给自己留半天的时间,让这些时间完全属于你自己。

21.大量饮用饮料---特别是水。肾脏需要充足的水来行使其正常的生理功能。

22.每天吃一只香蕉,香蕉比苹果对健康更有益。香蕉含有大量的维生素和纤维,另外它们都有外皮,因此你不必担心受到有毒化学物质和虫子的影响。除此之外,香蕉还具有低卡路里的特点。这使你不用担心发胖。

23.让生活充满欢乐,神情阴郁的工作狂英年早逝的可能性很大。而健康长寿的人常常将生活看成一种饶有兴味的冒险,因而他们得以长寿。幽默感很重要,经常阅读那些使人开怀大笑的书,看那些真正富有娱乐性的电影,并收集你最喜欢的书和电影,这样在你感到情绪不佳的时候就有了解脱的方法,争取每天都找到一点笑料。

24.当你为什么事情担忧的时候,问问你自己,什么是可以承受的最大限度—事情会糟到什么程度?一旦你知道了最糟的结果,你将惊讶于事情突然变得不那么可怕了。

25.别浪费你的生命。将那些垃圾邮件直接扔进纸篓。别回答那些不请自来的电话,别花时间接待各种各样的推销员,这样你每周都能节省下几个小时的时间—属于你自己的娱乐时间。登门拜访的推销员通常推销一些我们不需要的产品,而且不可避免地浪费了我们的时间。

26.买一个带开关的电话,或者买一个带自动答话功能的电话。在你想休息的时候就用得着那些功能了,你记得自己有多少次刚刚坐下休息就被电话打扰吗?多少次的社交晚会被不相干的电话搅和了?我们居然能容忍电话控制我们的生活—本来这些无礼的打扰即使来自孩子们,我们也是不能忍受的。

27.养成记日记的习惯。你不必在纸上写下所有的心灵独白,或者巨细无遗的流水帐。日记能帮你更有效地规划每曰生活—由此也避免了不必要和难以预料的压力。日记能给你抒发情绪的机会。

28.当你感觉愤怒或沮丧的时候,可尝试一些消耗体力的活动。出去散步、拍打毛毯、整修花园。如果你身体不适或体力不济,那就试试走到无人的地方,练练嗓子。排遣你的怒火,有助于保护身体免受不良刺激的影响。

29.如果你通常每晚在同一时刻睡觉,试试偶尔晚睡一次。比如看一次电影、参加一次晚会或与朋友促膝长谈。

30.估计一下你有多少工作时间是用来做你感兴趣的事情的?多少时间是花在别人让你做的事情上?如果你有一半以上的时间用来为他人无偿服务,那么你大可以“自私”一些,给你自己更多的时间。

31.如果你的屋子光线昏暗,那么买亮一点的灯泡。在半明半暗的屋里生活,对精神有压抑作用。大一点的灯泡不会使你的电费帐单难以承受。但是它无疑会给你的生活和情绪增添更多的亮色。

32.好好安排每周的计划,使每周的生活都有一个现实的目标。目标不一定是复杂的、昂贵的。和朋友策划一次聚会、出去散步或看场电影都是不错的计划。别沉湎于电视,以至于捱到最后一分钟才恋恋不舍地去执行你的每周计划。

33.如果你喜欢喝茶或咖啡,尽量不要喝浓茶或浓咖啡。这两种饮料中的咖啡因是一种强力药物。

34.花一点时间把自己打扮得更靓,尽管天气可能不好,你也想不出有什么地方可去,你仍得注意自己的形象。穿色调明亮、令人愉快的服装。良好的形象将提升你的自我感觉,避免穿暗色调的衣服。

35.自我按摩,放松情绪。挫折感、紧张感、愤怒和焦虑的情绪都容易导致肌肉的僵硬,结果造成头痛或其他部位的疼痛。试着每天晚上都用手指按摩自己的太阳穴部位。如果用手指轻轻地按摩整个脸部,将会给你带来清新之感。

36.换穿最舒适的内衣。穿上最薄、最性感和大胆的内衣。前提当然是你能买到它,并有能力消费,虽然这样的打扮不能使你感到暖和多少,但能给你一天良好的感觉。

37.给你5个最好的朋友发明信片。尽管没有任何理由。尽管看起来挺愚蠢,但这能使你和你的朋友都感到愉快。

38.常洗热水澡,如果你感到身体疲劳,或仅仅感到厌烦,试试洗一个热水澡吧,记住带上你喜欢的书或杂志。

39.浏览一下电视节目报。给那些你感兴趣的节目做上标记。等待的喜悦总是一种良好的感觉。

40.看电视的时候要有选择性,成年男子、妇女和儿童花在电视上的时间平均每夭分别为3,4,5个小时。这简直是对生命的浪费。

41.深呼吸。简单的锻炼方法,有助于放松你的身体:深深吸人一口气;然后尽量收腹,使腹部肌肉尽可能紧张;从1数到5;放松肌肉;最后将肺内的气体呼出,重复使用上述方法直至你完全放松。

42.永远不要忽视精神的力量。精神的作用可以使人得病,也可使人康复。

43.及时观察治疗效果。切记。如果在治疗的过程中出现了新的症状,那么该症状的产生很可能是治疗本身引起的。

44.少到公共浴室去洗澡。学校和运动场的更衣室内常拥挤着许多汗流浃背的人,彼此呼出含有细菌的空气,导致浴室成为最佳的传染疾病的场所。公共澡堂应该被废除。我的意见是。尽量注意保暖,在自己家中洗澡。

45.学会倾听身体发出的信号。当我还是一个早餐健康节目的主持医生时,一个妇女打电话问我,如何才能倾听到她身体的声音。因为她是一个聋子。其实你并不需要真正用耳朵听见身体发出的声响。你“倾听”的方法是尽量注意身体的微妙变化,要做到早期发现症状,根据情况采取相应的方案。

46.别将你的健康,身体甚至生命全盘托付给医生或其他专业人员。当你真正需要专业人员帮助的时候,记住要保留自我选择和控制的能力。你可以咨询专家们一些技术问题,但对你健康的决定权始终应掌握在你自己手里。尽量在他们开始行动前弄明白他们打算对你做什么,风险又是什么。记住,人体有自愈机制(我称之为“身体潜能”),十有八九能依靠自身的力量从疾病中康复。即便你需要外来的力量对付疾病,你的“身体潜能”仍能起不小的作用。

47.别因为综合使用正统治疗和替代疗法而忧心忡忡。需要注意的是,当一个医生对你施行治疗的时候,要确保他对你正在进行的其他治疗有所了解。

龙湖·三千里

在原公司的最后一个项目.龙湖成都楼盘项目站.

Url:http://www.longhu.com/project/3000/index.html

Pages (41) « Prev 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 Next »