<?php
//不写进类里的常用函数,写到类里太累了
//获取IP地址
function GetIP(){
if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown"))
$ip = getenv("HTTP_CLIENT_IP");
else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown"))
$ip = getenv("REMOTE_ADDR");
else if (isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown"))
$ip = $_SERVER['REMOTE_ADDR'];
else
$ip = "unknown";
return($ip);
}
//读取IP真实地址
function convertip($ip) {
    //IP数据文件路径
    $dat_path = 'include/QQWry.dat';
    //检查IP地址
    if(!ereg("^([0-9]{1,3}.){3}[0-9]{1,3}$", $ip)){
        return 'IP错误';
    }
    //打开IP数据文件
    if(!$fd = @fopen($dat_path, 'rb')){
        return 'IP不存在或拒绝访问';
    }
    //分解IP进行运算，得出整形数
    $ip = explode('.', $ip);
    $ipNum = $ip[0] * 16777216 + $ip[1] * 65536 + $ip[2] * 256 + $ip[3];
    //获取IP数据索引开始和结束位置
    $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;
    //使用二分查找法从索引记录中搜索匹配的IP记录
    while($ip1num>$ipNum || $ip2num<$ipNum) {
        $Middle= intval(($EndNum + $BeginNum) / 2);
        //偏移指针到索引位置读取4个字节
        fseek($fd, $ipbegin + 7 * $Middle);
        $ipData1 = fread($fd, 4);
        if(strlen($ipData1) < 4) {
            fclose($fd);
            return 'System Error';
        }
        //提取出来的数据转换成长整形，如果数据是负数则加上2的32次幂
        $ip1num = implode('', unpack('L', $ipData1));
        if($ip1num < 0) $ip1num += pow(2, 32);
        //提取的长整型数大于我们IP地址则修改结束位置进行下一次循环
        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;
}
//判断图片存在
function RuPic($face, $jgg = 'jpg') {
	if(file_exists("images/face/0$face.$jgg")) {
		return ("images/face/0$face.jpg");
	} else {
		return ("images/face/0$face.gif");
	}
}
//提示消息
function alert($mess,$url){
 echo "<script language=\"javascript\">";
 echo "alert(\"".$mess."\");";
 echo "location=\"".$url."\";";
 echo "</script>";
 exit;
 }

function backurl($z){
	echo "<script language=\"javascript\">";
	echo "location=\"".$z."\";";
	echo "</script>";
    exit;
 }


function txtToHtml($str)
{
	$str = ereg_replace("<","&lt;",$str);
	$str = ereg_replace(">","&gt;",$str);
	$str = ereg_replace("\"","",$str);
	$str = ereg_replace("  ","&nbsp; ",$str);
	$str = ereg_replace("\r\n","<br>",$str);
	$str = preg_replace("/\[img=(.+?)\,(.+?)\,(.+?)\]/is","<a target=\"_blank\" href=\\1><img src=\"\\1\" width=\"\\2\" height=\"\\3\"></a>",$str);
	$str = preg_replace("/\[flash=(.+?)\,(.+?)\,(.+?)\]/is","<embed src=\"\\1\" width=\"\\2\" height=\"\\3\" >",$str);
	$str = preg_replace("/\[flv=(.+?)\,(.+?)\,(.+?)\]/is","<object width=\"\\2\" height=\"\\3\" type=\"application/x-shockwave-flash\" wmode=\"transparent data=\"include/flash/flvplayer.swf?file=\\1&autostart=true&showfsbutton=true\"><param name=\"movie\" value=\"include/flash/flvplayer.swf?file=\\1&autostart=true&showfsbutton=true\" /><param name=\"wmode\" value=\"transparent\" /></object>",$str);
	$str = preg_replace("/\[mp3=(.+?)\,(.+?)\]/is","<object width=\"300\" height=\"45\" classid=\"clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6\"><param NAME=\"URL\" VALUE=\"\\1\"><param NAME=\"autoStart\" VALUE=\"\\2\"><embed src=\"\\1\" autostart=\"\\2\" type=\"application/x-mplayer2\" width=\"300\" height=\"45\"></object>",$str);
	$str = preg_replace("/\[url=(.+?)\]/is","<a target=\"_blank\" href=\\1><u>\\1</u></a>",$str);
	$str = preg_replace("/\[color=(.+?)\](.+?)\[\/color\]/is","<font color=\\1>\\2</font>",$str);
	$str = preg_replace("/\[email=(.+?)\]/is","<a href=\"mailto:\\1\"><u>\\1</u></a>",$str);
	$str = preg_replace("/\[i\](.+?)\[\/i\]/is","<i>\\1</i>",$str);
    $str = preg_replace("/\[u\](.+?)\[\/u\]/is","<u>\\1</u>",$str);
    $str = preg_replace("/\[b\](.+?)\[\/b\]/is","<b>\\1</b>",$str);
	$str = preg_replace("/\[size=(.+?)\](.+?)\[\/size\]/is","<font size=\\1>\\2</font>",$str);

	return $str;
}
function ClearHtml($str)
{
	$str = ereg_replace("<","&lt;",$str);
	$str = ereg_replace(">","&gt;",$str);
	$str = ereg_replace("\"","",$str);
	$str = ereg_replace("　","&nbsp;&nbsp;",$str);
	$str = ereg_replace("\r\n","<br>",$str);
	$str = preg_replace("/\[i\](.+?)\[\/i\]/is","<i>\\1</i>",$str);
    $str = preg_replace("/\[u\](.+?)\[\/u\]/is","<u>\\1</u>",$str);
    $str = preg_replace("/\[b\](.+?)\[\/b\]/is","<b>\\1</b>",$str);
	$str = preg_replace("/\[color=(.+?)\](.+?)\[\/color\]/is","<font color=\\1>\\2</font>",$str);
	$str = preg_replace("/\[img=(.+?)\,(.+?)\,(.+?)\]/is","[内容有图片]",$str);
	$str = preg_replace("/\[flash=(.+?)\,(.+?)\,(.+?)\]/is","<img src=include/flash/flash.gif>",$str);
	//$str = preg_replace("/\[flv=(.+?)\,(.+?)\,(.+?)\]/is","[flv标签]",$str);
	//$str = preg_replace("/\[mp3=(.+?)\,(.+?)\]/is","[mp3标签]",$str);
	$str = preg_replace("/\[url=(.+?)\]/is","[url标签]",$str);
	//$str = preg_replace("/\[email=(.+?)\]/is","[email标签]",$str);
	$str = preg_replace("/\[size=(.+?)\](.+?)\[\/size\]/is","[size标签]",$str);
	return $str;
}
//$Text=preg_replace("/\[url=(.+?)\](.+?)\[\/url\]/is","<a href=\"http://\\1\" target=\"new\"><u>\\2</u></a>",$Text);

//<object width="240" height="30" classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6">
//<param NAME="URL" VALUE="http://club.nihao8.com/attachment/Mon_1203/47_1_fc73b86040e54d0.mp3">
//<param NAME="autoStart" VALUE="-1">
//<embed src="http://club.nihao8.com/attachment/Mon_1203/47_1_fc73b86040e54d0.mp3" autostart="1" type="application/x-mplayer2" width="314" height="64"></object>

?>