12.24
1、更新无法显示 Opera 浏览器名称和版本问题。
2、更新无法正常显示 FireFox 浏览器名称和版本的问题。
3、更新遨游、世界之窗等基于IE的浏览器没有正确详细显示的问题。
共4个文件,
index.php, 显示页面
ip.php, IP转化为地址的代码页面
logo.png, 背景图片
QQWry.Dat IP数据库、 这个不改名字、网上有 showIP.exe 可以直接对这个IP数据库进行升级、纯真IP数据库。
将4个文件放支持PHP的服务器上某一目录下,调用就行了。
浏览地址:
http://lixf.net/ip/index.php
index.php 文件
PHP代码
- <?php
- Header("Content-type: image/PNG");
- $myip=$_SERVER["REMOTE_ADDR"];
- include"ip.php";
- $im = @imagecreatefrompng ("logo.png");
- $black = imagecolorallocate ($im, 0, 0, 0);
- $white = imagecolorallocate ($im, 255, 255, 255);
- $bkg = imagecolorallocate($im, 0,0,135 );
- $red = imagecolorallocate($im, 128,204,204 );
- $blue = imagecolorallocate($im, 255,255,168 );
- $code = new clientGetObj;
- $str1 = $code->getBrowse();
- $str2 = $code->getIP();
- $str4 = ip2location($str2);
- $str3 = $code->getOS();
- $font = '/simsun.ttc';
- imagestring($im,5,0,18," lixf.net",$red);
-
- ImageTTFText ($im,9,0,20,240,$white,$font,iconv("GB2312","UTF-8","您的IP地址是".$str2));
- ImageTTFText ($im,9,0,20,260,$white,$font,iconv("GB2312","UTF-8","您的真实地址是".$str4));
- ImageTTFText ($im,9,0,20,280,$red,$font,iconv("GB2312","UTF-8","您的操作系统是".$str3));
- ImageTTFText ($im,9,0,20,300,$white,$font,iconv("GB2312","UTF-8","您使用的浏览器是".$str1));
- ImagePNG($im);
- ImageDestroy($im);
-
-
-
-
-
- class clientGetObj
- {
- function getBrowse()
- {
- global $_SERVER;
- $Agent = $_SERVER['HTTP_USER_AGENT'];
- $browser = '';
- $browserver = '';
- $Browsers = array('Lynx', 'MOSAIC', 'AOL', 'Opera', 'JAVA', 'MacWeb', 'WebExplorer', 'OmniWeb');
- for($i = 0; $i <= 7; $i ++){
- if(strpos($Agent, $Browsers[$i])){
- $browser = $Browsers[$i];
- $browserver = '';
- }
- }
- if(ereg('Mozilla', $Agent) && !ereg('MSIE', $Agent)){
- $temp = explode('(', $Agent);
- $Part = $temp[0];
- $temp = explode('/', $Part);
- $browserver = $temp[1];
- $temp = explode(' ', $browserver);
- $browserver = $temp[0];
- $browserver = preg_replace('/([d.]+)/', '\1', $browserver);
- $browserver = $browserver;
- $browser = 'Netscape Navigator';
- }
-
- if(ereg('Mozilla', $Agent) && ereg('Firefox', $Agent)){
- $temp = explode(')', $Agent);
- $Part = $temp[2];
- $temp = explode('/', $Part);
- $browserver = $temp[1];
- $browserver = preg_replace('/([d.]+)/', '\1', $browserver);
- $browserver = $browserver;
- $browser = 'Firefox';
- }
-
- if(!ereg('Mozilla', $Agent) && ereg('Opera', $Agent)) {
- $temp = explode('(', $Agent);
- $Part = $temp[0];
- $temp = explode('/', $Part);
- $browserver = $temp[1];
- $browserver = preg_replace('/([d.]+)/', '\1', $browserver);
- $browserver = $browserver;
- $browser = 'Opera';
- }
-
-
-
- if(ereg('Mozilla', $Agent) && ereg('MSIE', $Agent)){
- $temp = explode('(', $Agent);
- $Part = $temp[1];
- $temp = explode(';', $Part);
- $Part = $temp[1];
- if (count($temp)==6) {
- $newIE = str_replace(" ","",$temp[5]);
- $newIE = str_replace(")","",$newIE);
- $newIE = "[".$newIE."]";
- }else{
- $newIE = "";
- }
- $temp = explode(' ', $Part);
- $browserver = $temp[2];
- $browserver = preg_replace('/([d.]+)/','\1',$browserver);
- $browserver = $browserver;
- $browser = 'Internet Explorer '.$newIE;
- }
- if($browser != ''){
- $browseinfo = $browser.' '.$browserver;
- } else {
- $browseinfo = false;
- }
- return $browseinfo;
- }
-
- function getIP ()
- {
- global $_SERVER;
- if (getenv('HTTP_CLIENT_IP')) {
- $ip = getenv('HTTP_CLIENT_IP');
- } else if (getenv('HTTP_X_FORWARDED_FOR')) {
- $ip = getenv('HTTP_X_FORWARDED_FOR');
- } else if (getenv('REMOTE_ADDR')) {
- $ip = getenv('REMOTE_ADDR');
- } else {
- $ip = $_SERVER['REMOTE_ADDR'];
- }
- return $ip;
- }
-
- function getOS ()
- {
- global $_SERVER;
- $agent = $_SERVER['HTTP_USER_AGENT'];
- $os = false;
- if (eregi('win', $agent) && strpos($agent, '95')){
- $os = 'Windows 95';
- }
- else if (eregi('win 9x', $agent) && strpos($agent, '4.90')){
- $os = 'Windows ME';
- }
- else if (eregi('win', $agent) && ereg('98', $agent)){
- $os = 'Windows 98';
- }
- else if (eregi('win', $agent) && eregi('nt 5.1', $agent)){
- $os = 'Windows XP';
- }
- else if (eregi('win', $agent) && eregi('nt 5.2', $agent)){
- $os = 'Windows 2003';
- }
- else if (eregi('win', $agent) && eregi('nt 5', $agent)){
- $os = 'Windows 2000';
- }
- else if (eregi('win', $agent) && eregi('nt', $agent)){
- $os = 'Windows NT';
- }
- else if (eregi('win', $agent) && ereg('32', $agent)){
- $os = 'Windows 32';
- }
- else if (eregi('linux', $agent)){
- $os = 'Linux';
- }
- else if (eregi('unix', $agent)){
- $os = 'Unix';
- }
- else if (eregi('sun', $agent) && eregi('os', $agent)){
- $os = 'SunOS';
- }
- else if (eregi('ibm', $agent) && eregi('os', $agent)){
- $os = 'IBM OS/2';
- }
- else if (eregi('Mac', $agent) && eregi('PC', $agent)){
- $os = 'Macintosh';
- }
- else if (eregi('PowerPC', $agent)){
- $os = 'PowerPC';
- }
- else if (eregi('AIX', $agent)){
- $os = 'AIX';
- }
- else if (eregi('HPUX', $agent)){
- $os = 'HPUX';
- }
- else if (eregi('NetBSD', $agent)){
- $os = 'NetBSD';
- }
- else if (eregi('BSD', $agent)){
- $os = 'BSD';
- }
- else if (ereg('OSF1', $agent)){
- $os = 'OSF1';
- }
- else if (ereg('IRIX', $agent)){
- $os = 'IRIX';
- }
- else if (eregi('FreeBSD', $agent)){
- $os = 'FreeBSD';
- }
- else if (eregi('teleport', $agent)){
- $os = 'teleport';
- }
- else if (eregi('flashget', $agent)){
- $os = 'flashget';
- }
- else if (eregi('webzip', $agent)){
- $os = 'webzip';
- }
- else if (eregi('offline', $agent)){
- $os = 'offline';
- }
- else {
- $os = 'Unknown';
- }
- return $os;
- }
- }
- ?>
ip.php文件
PHP代码
- <?php
-
- define('QQWRY' , 'CoralWry.dat' ) ;
-
- function IpToInt($Ip) {
- $array=explode('.',$Ip);
- $Int=($array[0] * 256*256*256) + ($array[1]*256*256) + ($array[2]*256) + $array[3];
- return $Int;
- }
-
-
- class TQQwry
- {
- var $StartIP = 0;
- var $EndIP = 0;
- var $Country = '';
- var $Local = '';
-
- var $CountryFlag = 0;
-
-
-
- var $fp;
-
- var $FirstStartIp = 0;
- var $LastStartIp = 0;
- var $EndIpOff = 0 ;
-
- function getStartIp ( $RecNo ) {
- $offset = $this->FirstStartIp + $RecNo * 7 ;
- @fseek ( $this->fp , $offset , SEEK_SET ) ;
- $buf = fread ( $this->fp , 7 ) ;
- $this->EndIpOff = ord($buf[4]) + (ord($buf[5])*256) + (ord($buf[6])* 256*256);
- $this->StartIp = ord($buf[0]) + (ord($buf[1])*256) + (ord($buf[2])*256*256) + (ord($buf[3])*256*256*256);
- return $this->StartIp ;
- }
-
- function getEndIp ( ) {
- @fseek ( $this->fp , $this->EndIpOff , SEEK_SET ) ;
- $buf = fread ( $this->fp , 5 ) ;
- $this->EndIp = ord($buf[0]) + (ord($buf[1])*256) + (ord($buf[2])*256*256) + (ord($buf[3])*256*256*256);
- $this->CountryFlag = ord ( $buf[4] ) ;
- return $this->EndIp ;
- }
-
- function getCountry ( ) {
-
- switch ( $this->CountryFlag ) {
- case 1:
- case 2:
- $this->Country = $this->getFlagStr ( $this->EndIpOff+4) ;
-
- $this->Local = ( 1 == $this->CountryFlag )? '' : $this->getFlagStr ( $this->EndIpOff+8);
- break ;
- default :
- $this->Country = $this->getFlagStr ($this->EndIpOff+4) ;
- $this->Local = $this->getFlagStr ( ftell ( $this->fp )) ;
-
- }
- }
-
-
- function getFlagStr ( $offset )
- {
-
- $flag = 0 ;
- while ( 1 ){
- @fseek ( $this->fp , $offset , SEEK_SET ) ;
- $flag = ord ( fgetc ( $this->fp ) ) ;
- if ( $flag == 1 || $flag == 2 ) {
- $buf = fread ($this->fp , 3 ) ;
- if ($flag == 2 ){
- $this->CountryFlag = 2 ;
- $this->EndIpOff = $offset - 4 ;
- }
- $offset = ord($buf[0]) + (ord($buf[1])*256) + (ord($buf[2])* 256*256);
- }else{
- break ;
- }
-
- }
- if ( $offset < 12 )
- return '';
- @fseek($this->fp , $offset , SEEK_SET ) ;
- return $this->getStr();
- }
- function getStr ( )
- {
- $str = '' ;
- while ( 1 ) {
- $c = fgetc ( $this->fp ) ;
- if ( ord ( $c[0] ) == 0 )
- break ;
- $str .= $c ;
- }
- return $str ;
- }
-
-
- function qqwry ($dotip) {
-
- $nRet;
- $ip = IpToInt ( $dotip );
-
- $this->fp= @fopen(QQWRY, "rb");
- if ($this->fp == NULL) {
- $szLocal= "OpenFileError";
- return 1;
-
- }
- @fseek ( $this->fp , 0 , SEEK_SET ) ;
- $buf = fread ( $this->fp , 8 ) ;
- $this->FirstStartIp = ord($buf[0]) + (ord($buf[1])*256) + (ord($buf[2])*256*256) + (ord($buf[3])*256*256*256);
- $this->LastStartIp = ord($buf[4]) + (ord($buf[5])*256) + (ord($buf[6])*256*256) + (ord($buf[7])*256*256*256);
-
- $RecordCount= floor( ( $this->LastStartIp - $this->FirstStartIp ) / 7);
- if ($RecordCount <= 1){
- $this->Country = "FileDataError";
- fclose ( $this->fp ) ;
- return 2 ;
- }
-
- $RangB= 0;
- $RangE= $RecordCount;
-
- while ($RangB < $RangE-1)
- {
- $RecNo= floor(($RangB + $RangE) / 2);
- $this->getStartIp ( $RecNo ) ;
-
- if ( $ip == $this->StartIp )
- {
- $RangB = $RecNo ;
- break ;
- }
- if ( $ip > $this->StartIp)
- $RangB= $RecNo;
- else
- $RangE= $RecNo;
- }
- $this->getStartIp ( $RangB ) ;
- $this->getEndIp ( ) ;
-
- if ( ( $this->StartIp <= $ip ) && ( $this->EndIp >= $ip ) ){
- $nRet = 0 ;
- $this->getCountry ( ) ;
-
- $this->Local = str_replace("(我们一定要解放台湾!!!)", "", $this->Local);
-
- }else {
- $nRet = 3 ;
- $this->Country = '未知' ;
- $this->Local = '' ;
- }
- fclose ( $this->fp ) ;
- return $nRet ;
- }
- }
-
-
- function ip2location ( $ip )
- {
- $wry = new TQQwry ;
- $nRet = $wry->qqwry ( $ip );
-
- return $wry->Country.$wry->Local ;
- }
-
-
- ?>
2007, January 15, 11:08 AM
改为
$t = rand(1,5);
$im = @imagecreatefrompng ("img/0".$t.".png");
//img 目录下的01.png ~ 05.png
2007, August 22, 12:41 PM
2008, March 22, 5:58 PM
出错
2008, March 24, 10:16 AM
2008, June 7, 9:35 PM
2008, June 7, 9:36 PM
2008, June 7, 9:38 PM
2010, May 28, 6:19 PM