php实用图片水印效果代码

 更新时间:2016年11月25日 16:02  点击:1253

php实用图片水印效果代码
<?php

define('Water',1);//水印方式(0,文字水印,1图片水印)

define('WaterImg','./water.jpg');//水印图片地址

define('WaterNum',0);//水印位置,0为随机,1-9分别为顶左顶中顶右中左中中中右底左底中底右

define('WaterX',81);//水印长

define('WaterY',81);//水印高

define('WaterType','image/jpeg');//水印图片类型

define('WaterText','爱搜罗');//水印文字(必须先转换成UTF-8才能实现中文水印)

define('WaterTextColor','#000000');//水印文字颜色

define('WaterTextSize',50);//水印文字大小 px

define('WaterTextFont','C:WINDOWSFontsSIMFANG.TTF');//水印文字字体 (仿宋)

define('WaterPtc',50);//水印透明度

//////////////////////水印默认设置完毕

 

class water

{

    private $img;//图片地址   

    private $img_type;//图片类型   

    //private $img_mime;//图片实际类型

    private $img_x;//图片长   

    private $img_y;//图片高

    private $is_water;//是否可以添加水印,布尔

    private $water_img;//水印图片

    private $water_text;//图片文字(UTF-8)   

    private $water_num;//水印位置(可能用不着)

    private $water_w = WaterX;//water的宽

    private $water_h = WaterY ;//water的长

    private $water_x;//水印的x位置

    private $water_y;//水印的y位置

    private $src_x;//画布与water两图的长度差

    private $src_y;//画布与water两图的高度差

    private $err_msg;//图片地址

 

    public function __construct($img,$img_type)

    {

        if (file_exists($img) == FALSE)

        {

            $this->Err_Img('No_Img');

        }

        $this->img = $img;

        $this->img_type = $img_type;//写入图片类型

        $this->Check_GD();//检查GD库

        $this->Do_Water();//判断水印方式

       

        $this->Type_Img();//判断图片类型

    }

    /*

     * 检查GD库

     */

    public function Check_GD(){

        if (function_exists("gd_info") == FALSE)

        {

            $this->Err_Img('No_Gd');

        }

    }

    /*

     * 处理水印方式及water文件类型

     */

    public function Do_Water()

    {

        if (Water == 1)//图片水印

        {

            $this->Img_Water();//处理water图片

        }else{//文字水印

            $this->Text_xy();//处理文字水印图片

        }

    }

    /*

     * 处理water图片

     */

    public function Img_Water()

    {

        if (file_exists(WaterImg) == FALSE)

        {

            $this->Err_Img('No_WaterImg');

            //使用文字水印

        }

        switch (WaterType)

        {

            case 'image/jpeg':

                $this->water_img = imagecreatefromjpeg(WaterImg);

                break;

        }

    }

    /*

     * 获得文字的长宽 并 计算 两图的长宽差

     */

    public function Text_xy()

    {

        $str   = iconv('GB2312','UTF-8',WaterText);

        $temp = imagettfbbox(50,0,WaterTextFont,$str);//取得使用 TrueType 字体的文本的范围

        $w = $temp[2] - $temp[6];

        $h = $temp[3] - $temp[7];

        $this->src_x = $this->img_x - $w;

        $this->src_y = $this->img_y - $h;

    }

    /*

     * 判断图片是否能够添加水印,比较大小

     */

    public function Is_Water()

    {

        if (Water == 1)//图片水印

        {

            $this->src_x = $this->img_x - WaterX;

            $this->src_y = $this->img_y - WaterY;

            if ($this->src_x <= 0 && $this->src_y <= 0)

            {

                $this->Err_Img('Too_Small');

            }

        }else{//文字水印

            if ($this->src_x <= 0 && $this->src_y <=0)

            {

                $this->Err_Img('Too_Small');

            }

        }

    }

    /*

     * 处理水印位置

     *   得到 水印位置的坐标

     */

    public function Water_Num()

    {

        switch(WaterNum)

        {

            case 0://随机

                $this->water_x = rand(0,($this->img_x - $this->water_w));

                $this->water_y = rand(0,($this->img_y - $this->water_h));

                break;

            case 1://顶端居左

                $this->water_x = 0;

                $this->water_y = 0;

                break;

            case 2://顶端居中

                $this->water_x = ($this->img_x - $this->water_w)/2;

                $this->water_y = 0;

                break;

            case 3://顶端居右

                $this->water_x = $this->img_x - $this->water_w;

                $this->water_y = 0;

                break;

            case 4://中间居左

                $this->water_x = 0;

                $this->water_y = ($this->img_y - $this->water_h)/2;

                break;

            case 5://中间居中

                $this->water_x = ($this->img_x - $this->water_w)/2;

                $this->water_y = ($this->img_y - $this->water_h)/2;

                break;

            case 6://中间居右

                $this->water_x = $this->img_x - $this->water_w;

                $this->water_y = ($this->img_y - $this->water_h)/2;

                break;

            case 7://底部居左

                $this->water_x = 0;

                $this->water_y = $this->img_y - $this->water_h;

                break;

            case 8://底部居中

                $this->water_x = ($this->img_x - $this->water_w)/2;

                $this->water_y = $this->img_y - $this->water_h;

                break;

            case 9://底部居右

                $this->water_x = $this->img_x - $this->water_w;

                $this->water_y = $this->img_y - $this->water_h;

                break;

            default://随机

                $this->water_x = rand(0,($this->img_x - $this->water_w));

                $this->water_y = rand(0,($this->img_y - $this->water_h));

        }

    }

    /*

     * 判断图片类型

     */

    public function Type_Img()

    {

        switch ($this->img_type)

            {

                case 'image/jpeg':

                    header("Content-type: image/jpeg");

                    $this->img = imagecreatefromjpeg($this->img);

                    break;

            }

            $this->Img_Water();//处理water图片

            $this->img_x = imagesx($this->img);

            $this->img_y = imagesy($this->img);

            $this->Water_Num();//判断水印位置

            $this->Is_Water();

            $this->Make_img();

    }

    /*

     * 制作图片水印

     */

    public function Make_img(){

                imagecopymerge($this->img,$this->water_img,$this->water_x,$this->water_y,0,0,WaterX,WaterY,WaterPtc);

                imagejpeg($this->img);

    }

    /*

     * 制作文字水印

     */

    public function Make_Text()

    {

                echo '测试';

    }

    /*

     * 返回错误信息

     */

    public function Err_Img($msg)

    {

        switch($msg)

        {

            case 'No_Gd':

                $this->err_msg = '没有安装GD库';

                break;

            case 'No_Img':

                $this->err_msg = '图片不存在';

                break;

            case 'No_WaterImg':

                $this->err_msg = 'water图片不存在';

                break;

            case 'Too_Small':

                $this->err_msg = '图片过小';

                break;

        }

        die($this->err_msg);//输出错误信息

    }

    public function __destruct()

    {

        imagedestroy($this->img);

        imagedestroy($this->img_water);

    }

}

 

$img = new water('./100.jpg','image/jpeg');//实例化

 

?>

php采集入门教程,教你如何写采集

我们第一步是采集所有的连接,我们这个可不是简单的采集一篇文章哦,我们要做的是采集整本书,并且保存到一个文本,因为现在MP3普及了,都可以看电子书了。
一本书要怎么保存呢,当然是要用书名保存便于查找拉,我们先来采集这本书的标题,
先来看一下原形:
<meta name="description" content="诛仙(二),后金庸武侠圣经:诛仙2">
规律是:
<meta name="description" content="标题">
我们来写一下正则表达式吧,不要告诉我不会,不会就来湖南拉,嘿嘿很多大鸟的。
正则表达式:
<meta name="description" content="(.*?)">
下面开始开工拉!我们首先要获得资源,这里需要用到一个函数:
file_get_contents()
介绍:
主要功能:将整个文件读入一个字符串
  原形是:string file_get_contents
( string filename [, bool use_include_path [, resource context [, int offset [, int maxlen]]]] )


具体什么意思呢,其实就是告诉你在某个资源内搜索符合规定的字符串并赋予给一个变量
  上边是开始需要用到的,我们了解一点就开始写一点那样更能够深刻的理解并且能记住,我来分析下写程序的思路:
我们采集一个地址,不会是就采集一本书把所以我们的采集地址是变化的,变化的用什么呢?这个时候一个硕大的粉笔扔了过来,我不是告诉你了吗?变量,一个严厉的王建军老师,用尽了全身力气,汇集在粉笔上对我无情的扔了过来,我想哭。。。。。。。老师打人了!!!!!!!!打家来看啊。
用变量好的,那就用变量,我们获取地址,代码如下:
$url = "http://book.sina.com.cn/nzt/lit/zhuxian2/index.shtml";// 图书地址
有了上边讲的,现在应该可以完全写出来了,开始代码:
<?php


//****************************************************************


$url = "http://book.sina.com.cn/nzt/lit/zhuxian2/index.shtml";// 图书地址


$ver = "old"; //新旧版本


//因为图书他的页面又两种板式,所以我们要在这里区别一下

//****************************************************************


// 获取页面代码 file_get_contents() 把文件读入一个字符串,下边的时候需要用到


$r = file_get_contents($url);


//在上边获取的字符串中搜索标题,并赋值给变量$booktitle,$booktitle是数组,/is就凑活理解成开始吧!


preg_match("/<meta name="description" content="(.*?)">/is",$r,$booktitle);


//把第一个出现捕获的标题赋值给变量bookname。


$bookname = $booktitle[1]; //书名


//print_r ($booktitle);die();不理解的输出这个看看,嘿嘿,帮助大家理解


/*************************************************************************************


*原形:<li><a href=/nzt/lit/zhuxian2/1.shtml target=_blank class=a03>第四十五章  伤痛(1)</a>


*规律是:<li><a href=不固定.shtml target=_blank class=a03>不固定</a>


*ISU是正则的一种模式,该模式是非贪婪模式,也就是说只要匹配上就结束


*************************************************************************************/


$preg = '/<li><a href=(.*).shtml target=_blank class=a03>/isU';


/********************************************************************************


*preg_match_all进行全局正则表达式匹配


*原形:


*
int preg_match_all


*


( string pattern, string subject, array matches [, int flags] )


*意思是:在全局搜索资源变量$preg,得到一个数组赋值给一个变量$zj,这个变量也就是数组了。


*取得其中的资源的时候用标示就可以,不会的看下数组哦!


*汪老师说了,不会数组的给我出去啃书,什么时候会了进来


**********************************************************************************/


preg_match_all($preg, $r, $zj);


//print_r ($zj);die();不理解的输出这个看看,嘿嘿,帮助大家理解


// 计算标题数量,我是问了最后提示大家看又多少章节,采集了多少


$bookzj = count($zj[1]);


//判断你要采集的板式是那种哦,因为内容开始不一样哦,其实可以自动判断的,我也写成了,但是不发布,因为很简单


if ($ver=="new"){

 

$content_start = "<!--正文内容开始-->";

 

$content_end = "<!--正文内容结束-->";

 

}


if ($ver=="old"){

 

$content_start = "</table><!--NEWSZW_HZH_END-->";

 

$content_end = "<br>";

 

}


//采集后的文件,然后那来进行处理.这个是设置编码的,为什么是这个呢,因为你看下网站源码,嘿嘿!!!

header("Content-Type:text/html;charset=gb2312");

/*****************************************************************************************

*从1到136页的内容一次合并.这个是最爽的...打个版权,以免有人侵权,嘿嘿,好像我就在侵权哦!!!

*某某一定想杀人,这句意思就是写个版权,创建文件。

*****************************************************************************************/

writer($bookname." 共".$bookzj."节rn帅哥刘并于".date("D M j G:i:s T Y")."为了毕业而设计小说整理收集rn", "./ljy/".$bookname.".txt","w+");

/*****************************************************************************************

*从1到136页的内容一次合并.这个是最爽的...打个版权,以免有人侵权,嘿嘿,好像我就在侵权哦!!!

*某某一定想杀人,这句意思就是写个版权,创建文件。

*****************************************************************************************/

for ($i=0;$i<$bookzj;$i++) {//提示下:$bookzj里边是什么前边叫你输出了,不明自自己在看下


//echo "http://book.sina.com.cn".$zj[1][$i]".shtml";die();


$str = file_get_contents("http://book.sina.com.cn".$zj[1][$i].".shtml");


preg_match("/(<title>)(.*?)(</title>)/is",$str,$title);


$title = str_replace("_读书频道_新浪网","",preg_replace("/<(.*?)>/s","",$title[2]));


/***************************************************************************


*preg_replace执行正则表达式的搜索和替换


*str_replace用法真的不好说,就看例子吧!其实就是一个替换


* str   =   "abcabc".replace(/a/g,   "d");         //结果为   dbcdbc  


* str   =   "abcabc".replace(/a/,   "d");         //结果为   dbcabc  


***************************************************************************/


preg_match("/(".$content_start.")(.*?)(".$content_end.")/is",$str,$content);


$content = preg_replace("/<(.*?)>/s","",str_replace("</p>","rn",$content[2]));


$content = str_replace("
","",preg_replace("/^[s]*n/is","",$content));


$content = str_replace("  ? ","  ",preg_replace("/^[s]*n/is","",$content));

 

$result = " rn第".($i+1)."节--------".$title."_汪老师就是帅 --------- rn".$content;


//var_dump ($result);die();


writer($result, "./ailaopo/".$bookname.".txt","a+");


echo "小说".$bookname."共".$bookzj."节,现在整理到第".$i."节 _".$title."<br>";

}
echo "小说".$bookname."共".$bookzj."节 已全部整理完成!";


function writer($content,$url,$mode)
{
    $fp = fopen($url, $mode);
    fwrite($fp, $content);
    fclose($fp);        
}
?> 

 

php 表单验证类
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>表单验证测试</title>
</head>

<body>
    <h2>简易表单验证!</h2>
    <div class="help" style="font-size:12px;color:grey">下面的例子已经够清楚了,如果需要自定义验证类型或者自定义验证表达式可以自定义函数:validate_myfun(需要验证的值,规则数组)<br />自定义表达式:_erun_myfun(要验证的值,规则数组,表达式数组)</div>
    <div class="info" style="padding:10px;background:#ffc">
<?php
function validate_testa($value,$args){
    if($value%2 == 0){
        return array(false,$args['cname'].'输入错误,只能输入奇数!');
    }else{
        return array(true,null);
    }
}
function _erun_testb($value,$args,$t){
    if($value >= $t['setting']){
        return array(false,$args['cname'].'只能输入小于'.$t['setting'].'的数!');
    }else{
        return array(true,null);
    }
}
/*以上是自定义函数和自定义表达式*/

if($_GET['action'] == 'post'){
require('include/Validator.php');
$validate_str = $_POST['valstr'];
unset($_POST['valstr']);

$val = new Validator();
$break = isset($_POST['break'])?true:false;

if($val->validate($_POST,$validate_str,$break)){
    echo "提交成功!";
}else{
    echo "<h4>提交失败</h4>";
    if($break){
        echo $val->getMsg();
    }else{
        echo "<ul>";
        foreach($val->getMsg() as $msg){
            echo "<li>".$msg."</li>";
        }
        echo "</ul>";
    }
}

}
?>
    </div>
    <div id="form">
        <form action="test.php?action=post" method="post" style="line-height:2;">
            标  题 : <input type="text" name="title" value="<?=$_POST['title']?>" /> *<br />
            密  码 : <input type="password" name="password" value="<?=$_POST['password']?>" /> *<br />
            确认密码 : <input type="password" name="passagain" value="<?=$_POST['passagain']?>" /> *<br />
            您的年龄 : <input type="text" name="age" value="<?=$_POST['age']?>" /><br />
            您的生日 : <input type="text" name="birth" value="<?=$_POST['birth']?>" /><br />
            自定义 : <input type="text" name="a" value="<?=$_POST['a']?>" /><br />
            验证字串 : <textarea name="valstr" cols="80" rows="10">title|标题|string|require=请务必填写标题|length(5:30)=标题长度不正确
password|密码|alnumu|require|length(6:)=密码不得少于6位
passagain|确认密码|alnumu|require|equal(password)
age|年龄|int=年龄必须为整数哦!||size(18:100)
birth|生日|time||time_format(Y-m-d)
a|测试类型|testa||testb(10)</textarea><br />
            <input name="break" type="checkbox" value="1" /> 只显示单个错误<br />
            <input type="submit" value="提交" name="submit" />
           
        </form>
    </div>
</body>
</html>

<?php
/**
 *
 * Created By Baoling
 * Date: 2009-07-13
 * Contact: .net">baoling@yeah.net / QQ:110042869
 * Blog: blog.meiu.cn
 *
 * 目前支持以下验证类型 注意验证的提示信息中不能含有空格、换行和竖线和等号空格用{SP}代替,换行用{LF}代替,竖线用{VE}
 * string 字符,
 * time 时间日期,
 * alnum 字母加数字,
 * alpha 字母,
 * alnumu 字母数字下划线,
 * digits 数字,
 * graph 可显示的字符,
 * lower 小写,
 * print 可否打印,
 * punct 标点,
 * whitespace 空格或制表符,
 * upper 大写,
 * int 整型,
 * float 浮点型,
 * ipv4 ip地址,
 * binary 二进制数,
 * domain 域名,
 * email Email
 *
 * 要验证的数组的key | 中文名称 | 验证类型 | 是否必须 | 其他(equal length size format)
 * title|标题|string=格式不正确|require=必须要填写|length(22:32)=长度不正确
 * age|年龄|int|require|size(1:200) equal(addtime)
 * addtime|时间|time|require|time_format(Y-m-d)
 * ipaddr|IP地址|ipv4|require|
 * email|email地址|email|require|
 * password|密码|string|require|equal(title)
 * a|测试a|float|require|length(0:199.99)
 * b|测试b|binary|require|
 * c|测试c|binary||
 *
 */
 //清除数组内各个值的前后空格
function trimArray($Input){
    if (!is_array($Input))
        return trim($Input);
 
    return array_map('trimArray', $Input);
}

class Validator{
   
    var $_locale = null;
    var $break = false;
    var $pass = true;
    var $errmsg = array();
    var $arr = array();

    function validate($arr,$rule_str,$break = null){
        if($break !== null){
            $this->break = $break;
        }
        $this->arr = $arr;

        if(trim($rule_str) == ''){
            exit('Validate rules can't be empty!');
        }

        $rule_str = str_replace("r",'',trim($rule_str));
        $rule_arr = explode("n",$rule_str);

        foreach($rule_arr as $rule){
            if(!$this->_complier_rule($rule) && $this->break == true){
                return false;
            }
        }

        return $this->pass;
    }
    /**
     * 解析每条规则并验证
     */
    function _complier_rule($rule){
        $rule = trim($rule);

        if($rule == ''){
            exit('Validate rules can't be empty!');
        }else{
            $ruleargs = trimArray(explode('|',$rule));
            $args = array(
                'field'      => $ruleargs[0],
                'cname'      => $ruleargs[1],
                'type'       => $ruleargs[2],
                'require'    => $ruleargs[3],
                'expression' => $ruleargs[4]
            );
            unset($ruleargs);

            if($this->_validate_require($args)){ //验证字段是否填写
                $tpos = strpos($args['type'],'=');
                if($tpos){
                    $func_name = 'validate_'.substr($args['type'],0,$tpos);
                    $error_title = substr($args['type'],$tpos+1,strlen($args['type']));
                }else{
                    $func_name = 'validate_'.$args['type'];
                    $error_title = null;
                }
                if(method_exists($this,$func_name)){
                    $return = $this->{$func_name}($this->arr[$args['field']],$args,$error_title);
                }else{
                    if(function_exists($func_name)){
                        list($return,$msg) = call_user_func($func_name,$this->arr[$args['field']],$args);

                        if(!$return){
                            if($tpos){
                                $this->_setMsg($args['field'],null,$error_title);
                            }else{
                                $this->_setMsg($args['field'],$args['cname'],$msg);
                            }
                        }
                    }else{
                        exit('The validator function doesn't exist!');
                    }
                }
                if(!$return){
                    $this->pass = false;
                }
                //验证表达式
                $this->_expressions($args);
            }

            return $this->pass;
        }
    }
    /**
     * 验证必填字段
     */
    function _validate_require($args){
        if( array_key_exists($args['field'],$this->arr) ){
            if(strncasecmp($args['require'],'require',7) == 0 && $this->arr[$args['field']] == ''){
                if($mpos = strpos($args['require'],'=')){
                    $this->_setMsg($args['field'],null,substr($args['require'],$mpos+1,strlen($args['require'])));
                }else{
                    $this->_setMsg($args['field'],$args['cname'],'不能为空!');
                }
                $this->pass = false;
                return false;
            }elseif($this->arr[$args['field']] != ''){
                return true;
            }else{
                return false;
            }
        }elseif(strncasecmp($args['require'],'require',7) == 0){
            if($mpos = strpos($args['require'],'=')){
                $this->_setMsg($args['field'],null,substr($args['require'],$mpos+1,strlen($args['require'])));
            }else{
                $this->_setMsg($args['field'],$args['cname'],'不能为空!');
            }
            $this->pass = false;
            return false;
        }else{
            return false;
        }
    }
    /**
     * 验证表达式
     */
    function _expressions($args){
        if(preg_match_all('/([a-zA-Z0-9_-]+)(([^(]+))=?([^s]*)/',$args['expression'],$t)){
            foreach($t[0] as $k=>$v){
                if($t[1][$k] != 'time_format'){
                    $tt = array('expression'=>$t[1][$k],'setting'=>$t[2][$k],'title'=>$t[3][$k]);
                    $equal_func = "_erun_".$t[1][$k];
                    if(method_exists($this,$equal_func)){
                        $this->{$equal_func}($args,$tt);
                    }else{
                        if(function_exists($equal_func)){
                            list($return,$msg) = call_user_func($equal_func,$this->arr[$args['field']],$args,$tt);
                        }else{
                            exit('The validator expression function doesn't exist!');
                        }
                        if(!$return){
                            $this->pass = false;
                            if(!empty($tt['title'])){
                                $this->_setMsg($args['field'],null,$tt['title']);
                            }else{
                                $this->_setMsg($args['field'],$args['cname'],$msg);
                            }
                        }
                    }
                }
            }
        }
    }
    //表达式equal判断与某个字段是否相等
    function _erun_equal($args,$t){
        if($this->arr[$args['field']] != $this->arr[$t['setting']]){
            $this->pass = false;
            if(!empty($t['title'])){
                $this->_setMsg($args['field'],null,$t['title']);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'不一致!');
            }
        }
    }
    //表达式length,判断字符长度
    function _erun_length($args,$t){
        if(strpos($t['setting'], ':') !== false){
            $length_rule = explode(':',$t['setting']);
            $length = strlen($this->arr[$args['field']]);

            if($length_rule[0] == '' && $length > $length_rule[1]){
                $this->pass = false;
                $title = sprintf("大于 %s 字符的限制!",$length_rule[1]);
            }
            if($length_rule[1] == '' && $length < $length_rule[0]){
                $this->pass = false;
                $title = sprintf("不得小于 %s 字符!",$length_rule[0]);
            }
            if($length_rule[0] != '' && $length_rule[1] != '' && ($length < $length_rule[0] || $length > $length_rule[1])){
                $this->pass = false;
                $title = sprintf("必须介于 %s 和 %s 字符之间!",$length_rule[0],$length_rule[1]);
            }

            if(isset($title)){
                if(!empty($t['title'])){
                    $this->_setMsg($args['field'],null,$t['title']);
                }else{
                    $this->_setMsg($args['field'],$args['cname'],$title);
                }
            }
        }
    }
    //表达式size,验证数字型的大小,支持digits,int和float
    function _erun_size($args,$t){
        if(strpos($t['setting'], ':') !== false && preg_match('/^(digits|int|float)/i',$args['type'])){

            $size_rule = explode(':',$t['setting']);

            $num = $this->arr[$args['field']];

            if($size_rule[0] == '' && $num > $size_rule[1]){
                $this->pass = false;
                $title = sprintf("不得大于 %s!",$size_rule[1]);
            }
            if($size_rule[1] == '' && $num < $size_rule[0]){
                $this->pass = false;
                $title = sprintf("不得小于 %s!",$size_rule[0]);
            }
            if($size_rule[0] != '' && $size_rule[1] != '' && ($num < $size_rule[0] || $num > $size_rule[1])){
                $this->pass = false;
                $title = sprintf("必须在 %s 和 %s 之间!",$size_rule[0],$size_rule[1]);
            }
            if(isset($title)){
                if(!empty($t['title'])){
                    $this->_setMsg($args['field'],null,$t['title']);
                }else{
                    $this->_setMsg($args['field'],$args['cname'],$title);
                }
            }
        }
    }
    function getMsg(){
        if($this->break){
            if(is_array($this->errmsg))
                return end($this->errmsg);
        }else{
            return $this->errmsg;
        }
    }

    function validate_string($value,$args,$typemsg = null){
        if(is_string($value)){
            return true;
        }else{
            if(isset($typemsg)){
                $this->_setMsg($args['field'],null,$typemsg);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'必须是字符!');
            }
            return false;
        }
    }

    function validate_time($value,$args,$typemsg = null){
        $test = @strtotime($value);
        if ($test === false || $test === - 1)
        {
            if(isset($typemsg)){
                $this->_setMsg($args['field'],null,$typemsg);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'不是正确的时间/日期格式!');
            }
            return false;
        }

        if(preg_match('/time_format(([^(]+))=?([^s]*)/',$args['expression'],$t)){
            if(date($t[1],$test) == $value){
                return true;
            }else{
                if(!empty($t[2])){
                    $this->_setMsg($args['field'],null,$t[2]);
                }else{
                    $this->_setMsg($args['field'],$args['cname'],'不是正确的时间/日期格式!');
                }
                return false;
            }
        }
        return true;
    }

    function validate_alnum($value,$args,$typemsg = null)
    {
        if(ctype_alnum($value)){
            return true;
        }else{
            if(isset($typemsg)){
                $this->_setMsg($args['field'],null,$typemsg);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'只能是数字和字母!');
            }
            return false;
        }
    }

    function validate_alpha($value,$args,$typemsg = null)
    {
        if(ctype_alpha($value)){
            return true;
        }else{
            if(isset($typemsg)){
                $this->_setMsg($args['field'],null,$typemsg);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'必须是纯英文字!');
            }
            return false;
        }
    }

    function validate_alnumu($value,$args,$typemsg = null)
    {
        if(preg_match('/[^a-zA-Z0-9_]/', $value) == 0){
            return true;
        }else{
            if(isset($typemsg)){
                $this->_setMsg($args['field'],null,$typemsg);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'只能是字母数字和下划线!');
            }
            return false;
        }
    }

    function validate_digits($value,$args,$typemsg = null)
    {
        if(is_numeric($value)){
            return true;
        }else{
            if(isset($typemsg)){
                $this->_setMsg($args['field'],null,$typemsg);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'必须是数字!');
            }
            return false;
        }
    }

    function validate_graph($value,$args,$typemsg = null)
    {
        if(ctype_graph($value)){
            return true;
        }else{
            if(isset($typemsg)){
                $this->_setMsg($args['field'],null,$typemsg);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'必须是可见字符!');
            }
            return false;
        }
    }

    function validate_lower($value,$args,$typemsg = null)
    {
        if(ctype_lower($value)){
            return true;
        }else{
            if(isset($typemsg)){
                $this->_setMsg($args['field'],null,$typemsg);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'必须全部小写!');
            }
            return false;
        }
    }

    function validate_print($value,$args,$typemsg = null)
    {
        if(ctype_print($value)){
            return true;
        }else{
            if(isset($typemsg)){
                $this->_setMsg($args['field'],null,$typemsg);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'必须是可打印字符!');
            }
            return false;
        }
    }

    function validate_punct($value,$args,$typemsg = null)
    {
        if(ctype_punct($value)){
            return true;
        }else{
            if(isset($typemsg)){
                $this->_setMsg($args['field'],null,$typemsg);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'必须是标点符号!');
            }
            return false;
        }
    }

    function validate_whitespace($value,$args,$typemsg = null)
    {
        if(ctype_space($value)){
            return true;
        }else{
            if(isset($typemsg)){
                $this->_setMsg($args['field'],null,$typemsg);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'必须为空格或制表符!');
            }
            return false;
        }
    }

    function validate_upper($value,$args,$typemsg = null)
    {
        if(ctype_upper($value)){
            return true;
        }else{
            if(isset($typemsg)){
                $this->_setMsg($args['field'],null,$typemsg);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'必须全部大写!');
            }
            return false;
        }
    }

    function validate_int($value,$args,$typemsg = null)
    {
        if (is_null($this->_locale))
        {
            $this->_locale = localeconv();
        }

        $value = str_replace($this->_locale['decimal_point'], '.', $value);
        $value = str_replace($this->_locale['thousands_sep'], '', $value);

        if (strval(intval($value)) != $value)
        {
            if(isset($typemsg)){
                $this->_setMsg($args['field'],null,$typemsg);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'必须为整数!');
            }
            return false;
        }
        return true;
    }

    function validate_float($value,$args,$typemsg = null)
    {
        if (is_null($this->_locale))
        {
            $this->_locale = localeconv();
        }

        $value = str_replace($this->_locale['decimal_point'], '.', $value);
        $value = str_replace($this->_locale['thousands_sep'], '', $value);

        if (strval(floatval($value)) != $value)
        {
            if(isset($typemsg)){
                $this->_setMsg($args['field'],null,$typemsg);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'必须为浮点数!');
            }
            return false;
        }
        return true;
    }

    /**
     * 是否是 IPv4 地址(格式为 a.b.c.h)
     *
     * @param mixed $value
     *
     * @return boolean
     */
    function validate_ipv4($value,$args,$typemsg = null)
    {
        $test = @ip2long($value);
        if($test !== - 1 && $test !== false){
            return true;
        }else{
            if(isset($typemsg)){
                $this->_setMsg($args['field'],null,$typemsg);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'不是有效的IP地址!');
            }
            return false;
        }
    }

    /**
     * 是否是二进制数值
     *
     * @param mixed $value
     *
     * @return boolean
     */
    function validate_binary($value,$args,$typemsg = null)
    {
        if(preg_match('/[01]+/', $value)){
            return true;
        }else{
            if(isset($typemsg)){
                $this->_setMsg($args['field'],null,$typemsg);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'必须是二进制数字!');
            }
            return false;
        }
    }

    /**
     * 是否是 Internet 域名
     *
     * @param mixed $value
     *
     * @return boolean
     */
    function validate_domain($value,$args,$typemsg = null)
    {
        if(preg_match('/[a-z0-9.]+/i', $value)){
            return true;
        }else{
            if(isset($typemsg)){
                $this->_setMsg($args['field'],null,$typemsg);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'不是有效的域名!');
            }
            return false;
        }
    }

    function validate_email($value,$args,$typemsg = null)
    {
        if(preg_match('/^[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}$/i', $value)){
            return true;
        }else{
            if(isset($typemsg)){
                $this->_setMsg($args['field'],null,$typemsg);
            }else{
                $this->_setMsg($args['field'],$args['cname'],'不是有效的email!');
            }
            return false;
        }
    }

    function _setMsg($key,$name=null,$text){
        if(!isset($this->errmsg[$key])){
            if(!isset($name)){
                $this->errmsg[$key] = str_replace(array('{SP}','{LF}','{VE}'),array(' ',"n",'|'),$text);
            }else{
                $this->errmsg[$key] = $name.': '.$text;
            }
        }
    }

}

<?php
        $conn=@mysql_connect("localhost","root","123") or die("服务器连接错误!"); //链接数据库
        @mysql_select_db("upload",$conn) or die("未发现数据库!");
    $query="select * from upfile where ftag=$fn";
    $result=mysql_query($query);
    if(!$result) die("error: mysql query");
    $num=mysql_num_rows($result);
    if($num<1) die("error: no this recorder");    
    $data = mysql_result($result,0,"picture");
    header("Content-type: image/JPEG",true);
    echo $data;    
?>


<?php
// 获取用户IP地址
function getIp() {
    if($_SERVER['HTTP_CLIENT_IP'])
    {
        return $_SERVER['HTTP_CLIENT_IP'];
    } elseif ($_SERVER['HTTP_X_FORWARDED_FOR']) {
        return $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
        return $_SERVER['REMOTE_ADDR'];
    }
}

function getFile($url)
{
    if($f=fopen("$url","r"))
    {
        while(!feof($f))
        {
            $s.=fgets($f);
        }
        fclose($f);
        return $s;
    } else {
        return false;
    }   
}

function putFile($file_name,$file_string)
{
    if($f=fopen($file_name,"w"))
    {
        fwrite($f, $file_string);
    }
    fclose($f);
}

function cnSubStr($string,$sublen) {
     if($sublen>=strlen($string)){
           return $string;
     }
     $s="";
     for($i=0;$i<$sublen;$i++){
           if(ord($string{$i})>127){
                 $s.=$string{$i}.$string{++$i};
                 continue;
           }else{
                 $s.=$string{$i};
                 continue;
           }
     }
     return $s."...";
}

function getPageBar($count = 0)
{
    $bad_link_color = "#C0C0C0";
   
    $page["url"]           = eregi_replace("&page=[^&]+","",basename($_SERVER[SCRIPT_NAME])."?".$_SERVER[QUERY_STRING]);
   
    $page["result_count"]  = (string) $count;
    $page["this_page"]     = (empty($_GET["page"]))?"1":$_GET["page"];
    $page["this_page"]     = ($page["result_count"] == 0)?"0":$page["this_page"];

    $page["page_size"]     = $GLOBALS["option"]["page_size"];
    $page["page_count"]    = (string) ceil($page["result_count"]/$page["page_size"]);
   
    $page["first_page"]     = ($page["this_page"] > 1)?"<a href="".$page["url"]."&page=1" title="首页"><span style="font-size:12px; font-weight: bold; font-familly: Courier;">&laquo;</span></a>":"";
    $page["rearward_page"]  = ($page["this_page"] < (int) $page["page_count"])?"<a href="".$page["url"]."&page=".$page["page_count"]."" title="末页"><span style="font-size:12px; font-weight: bold; font-familly: Courier;">&raquo;</span></a>":"";
    $page["prev_page"]      = ($page["this_page"] > 1)?"<a href="".$page["url"]."&page=".((int)$page["this_page"] - 1)."" title="上一页"><span style="font-size:12px; font-weight: bold; font-familly: Courier;">‹</span></a>":"";
    $page["next_page"]      = ($page["this_page"] < (int) $page["page_count"])?"<a href="".$page["url"]."&page=".((int)$page["this_page"] + 1)."" title="下一页"><span style="font-size:12px; font-weight: bold; font-familly: Courier;">›</span></a>":"";
   
    $page['start_page'] = ((int)$page["this_page"]-5<1)?1:(int)$page["this_page"]-5;
    $page['end_page'] = ((int)$page["this_page"]+5 > $page['page_count'])?(int)$page["page_count"]:(int)$page["this_page"]+5;

    for ($i = $page['start_page'];$i <= $page['end_page'];$i++)
    {
        $selected = ($_GET["page"] == $i)?"selected":"";
        $page["page_select"]  .= "<option value="$i" $selected>$i</option>";
        $page["page_list"]  .= ($i == $page["this_page"])?" <font color="red">$i</font> ":"<a href="".$page['url']."&page=$i" title="第 ".$i." 页">[$i]</a>";
    }
   
   
    return $page;
}

function getRows($table,$order='')
{
    if (!empty($order))
    {
        $order = explode(',',$order);
        $order = 'ORDER BY `'.$order[0].'` '.$order[1];
    }
    $query = dbQuery("SELECT * FROM `".$GLOBALS['prefix'].$table."` ".$order.";");
    while ($row = dbArray($query))
    {
        $link[$row['id']] = $row;
    }
    return $link;
}

function autoTime($time)
{
    preg_match('/([0-9]*)-([0-9]*)-([0-9]*) ([0-9]*):([0-9]*):([0-9]*)/',$time,$date);
    return mktime ($date[4],$date[5],$date[6],$date[2],$date[3],$date[1]);
}

function getTime() {
    $t = explode(' ', microtime());
    return $t[1] + $t[0];
}

function calendar($time)
{
    $start = mktime(0, 0, 0, date('m', $time), 1,   date('Y', $time));
    $prev_month['year']  = date('Y',$start-86400);
    $prev_month['month'] = date('m',$start-86400);
    $end   = mktime(0, 0, 0, date('m', $time)+1, 1,   date('Y', $time));
    $next_month['year']  = date('Y',$end);
    $next_month['month'] = date('m',$end);
    $sWeekday=array('日','一','二','三','四','五','六');
    //$sWeekday=array('S','M','T','W','T','F','S');
    $title=date('M Y', $time);

    $str = '';
    $str .= <<<END
<table class="calendar" cellspacing="1">
    <tr class="title">
        <th colspan="1"><a href=?mod=article&year={$prev_month['year']}&month={$prev_month['month']}><span style="font-size:12px; font-weight: bold; font-familly: Courier;">&laquo;</span></a></td>
        <th colspan="5">{$title}</td>
        <th colspan="1"><a href=?mod=article&year={$next_month['year']}&month={$next_month['month']}><span style="font-size:12px; font-weight: bold; font-familly: Courier;">&raquo;</span></a></td>
    </tr>
    <tr class="head">
        <th>{$sWeekday[0]}</td>
        <th>{$sWeekday[1]}</td>
        <th>{$sWeekday[2]}</td>
        <th>{$sWeekday[3]}</td>
        <th>{$sWeekday[4]}</td>
        <th>{$sWeekday[5]}</td>
        <th>{$sWeekday[6]}</td>
    </tr>
    <tr class="cbody">

END;
$year  = (empty($_GET['year']))?date('Y'):$_GET['year'];
$month = (empty($_GET['month']))?date('m'):$_GET['month'];
$query = dbQuery("SELECT FROM_UNIXTIME(date,'%e') as `day`,count(*) as `count` FROM `".$GLOBALS['prefix']."article`,`".$GLOBALS['prefix']."article_class` WHERE FROM_UNIXTIME(date,'%Y/%m') = '".$year."/".$month."' AND `status` = 'published' AND ".$GLOBALS['prefix']."article.class_id = ".$GLOBALS['prefix']."article_class.id AND `in_main_page` = 1 GROUP BY `day`;");
for ($i = 0;$i < mysql_num_rows($query);$i++)
{
    $row = dbArray($query);
    $calendar[$row['day']] = $row['count'];
}

    for ($i = 0;$i < date('w',$start);$i++)
    {
        $str.= '<td> </td>';
    }
    for($stamp=$start;$stamp<$end;$stamp+=86400) // loop through each day, which is 86400 seconds
    {
        $weekday=date('w', $stamp);
        $day = date('d', $stamp);
        if(date('Y-m-d', $stamp)==date('Y-m-d')) $style='today';
        else if(date('w', $stamp)==0 || date('w', $stamp)==6) $style='weekend';
        else $style='weekday';
        $str.= "tt".'<td class="'.$style.'">';
        $str.= ($calendar[date('j', $stamp)] > 0)?'<a href="?mod=article&year='.$year.'&month='.$month.'&day='.$day.'">'.(int)$day.'</a>':(int)$day;
        $str.= '</td>'."n";
        if(date('w', $stamp)==6) $str.="t".'</tr>'."n";
    }

    $str .= '</table>';
    return $str;
}
//php利用纯真ip数据库查地址的函数
function convertip($ip) {
        if(!preg_match("/^d{1,3}.d{1,3}.d{1,3}.d{1,3}$/", $ip)) {
                return '';
        }

        if($fd = @fopen( "e:hostswkhddbipdatawry.dat", 'rb')) {//fopen()中是纯真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 '系统错误';
                        }
                        $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 '系统错误';
                        }
                        $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 '系统错误';
                        }
                        $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";  //  完整地址为 "$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 = PHPCMS_ROOT.'./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 '未知地址';

        }

}
// station_id 函数
function sta_id(){

    include_once('./include/tq/config.inc.php');
    include_once('./include/tq/error.inc.php');
    include_once('./include/tq/mysql.inc.php');
    include_once('./include/tq/template.inc.php');

unset($onlineip);
if($_SERVER['HTTP_CLIENT_IP']){
     $onlineip=$_SERVER['HTTP_CLIENT_IP'];
}elseif($_SERVER['HTTP_X_FORWARDED_FOR']){
     $onlineip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
     $onlineip=$_SERVER['REMOTE_ADDR'];
}

$ips = $onlineip;


$addr = convertip($ips);

$address = $addr;

$address = str_replace(array('省','市','县','工业','北京','区','大学','武汉','西安','安交','海交','新疆','大连','广西'),array(' ',' ',' ',' 工业','北京 ',' ',' ','武汉 ','西安 ','安 交','海 交','新疆 ','大连 ','广西 '),$address);
$addresss = explode(" ",$address);

$address1 = $addresss[0];
$address2 = $addresss[1];
$address3 = $addresss[2];
$address4 = $addresss[3];

$query = dbQuery("select count(*) as num from ".weather_station." where province like '$address1' ");//查询 省字段 数目
$row = dbArray($query);

$number = $row["num"];


if($number>0 && $address2<>'' && $address1<>上海 && $address1<>重庆){
             unset($addresss[0]);
             }
if($address4==''){
                  unset($addresss[3]);
                 }
if($address3==''){
                  unset($addresss[2]);
                 }


$query = dbQuery("select count(*) as num from ".weather_station." where station like '$address4' ");//查询 县 字段
$row = dbArray($query);
$number = $row["num"];
if($number==0){
               unset($addresss[3]);
              }

$query = dbQuery("select count(*) as num from ".weather_station." where station like '$address3' ");//查询 县 字段
$row = dbArray($query);
$number = $row["num"];
if($number==0){
               unset($addresss[2]);
              }
//数组数据2 查询开始
$queryx = dbQuery("select count(*) as nums from ".weather_station." where station like '$address2' ");//查询 县 字段
$row = dbArray($queryx);
$nums = $row["nums"];

$queryy = dbQuery("select count(*) as numd from ".weather_station." where district like '$address2' ");//查询 市 字段
$row = dbArray($queryy);
$numd = $row["numy"];

if($nums==0 && $numd==0){
               unset($addresss[1]); // 如果 数组数据2 不在数据库里则删除数据2
              }
//数组数据2 查询结束

$query = dbQuery("select count(*) as num from ".weather_station." where district like '$address2' ");//查询 市 字段
$row = dbArray($query);
$number = $row["num"];
if($number>1 && $address3<>'' && $nums<>0 && $address2<>广州 ){
               unset($addresss[1]); // 如果数组数据2在数据库里有 多个 则删除数据2
              }

@extract(dbQuery("select count(*) as num_0 from ".weather_station." where district like '$address1' "));//查询 市 字段
@extract(dbQuery("select count(*) as num_1 from ".weather_station." where station like '$address2' "));//查询 县 字段
$number = $num_0;
$numbery = $num_1;
if($number>1 && $numbery>0 && $address2<>''){
               unset($addresss[0]); //如果数组数据1在数据库里有 多个 则删除数据1
              }

$addresss = implode("",$addresss);                           

 

//字符串处理完毕 下面开始查询 station_id

$query1 = dbQuery("select count(*) as nums_addresss from ".weather_station." where station like '$addresss' ");
$row1 = dbArray($query1);
$nums_addresss = $row1["nums_addresss"];
$query2 = dbQuery("select count(*) as numd_addresss from ".weather_station." where district like '$addresss' ");
$row2 = dbArray($query2);
$numd_addresss = $row2["numd_addresss"];
if($nums_addresss>0){
  $result = dbQuery("SELECT station_id FROM ".weather_station." WHERE station like '$addresss' ORDER BY id");
  $r = dbArray($result);
 
  $station_id[] = $r[station_id];
  $station_id = $station_id[0];
  return $station_id; // 查询结果
 
                    }

if($nums_addresss==0 && $numd_addresss>0){
  $result = dbQuery("SELECT station_id FROM ".weather_station." WHERE district like '$addresss' ORDER BY id");
  $r = dbArray($result);
 
  $station_id[] = $r[station_id];
  $station_id = $station_id[0];
  return $station_id; // 查询结果
  //echo $station_id;
                    }
}
function get_real_ip()
{
        $ip=false;
        if(!empty($_SERVER["HTTP_CLIENT_IP"]))
        {
                $ip = $_SERVER["HTTP_CLIENT_IP"];
        }
        if (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
        {
                $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']);
                if ($ip)
                {
                        array_unshift($ips, $ip); $ip = FALSE;
                }
                for ($i = 0; $i < count($ips); $i++)
                {
                        if (!eregi ("^(10|172.16|192.168).", $ips[$i]))
                        {
                                $ip = $ips[$i];
                                break;
                        }
                }
        }
        return ($ip ? $ip : $_SERVER['REMOTE_ADDR']);
}

function addr(){

    include_once('./include/tq/config.inc.php');
    include_once('./include/tq/error.inc.php');
    include_once('./include/tq/mysql.inc.php');
    include_once('./include/tq/template.inc.php');

unset($onlineip);
if($_SERVER['HTTP_CLIENT_IP']){
     $onlineip=$_SERVER['HTTP_CLIENT_IP'];
}elseif($_SERVER['HTTP_X_FORWARDED_FOR']){
     $onlineip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}else{
     $onlineip=$_SERVER['REMOTE_ADDR'];
}

$ips = $onlineip;


$addr = convertip($ips);

$address = $addr;

$address = str_replace(array('省','市','县','工业','北京','区','大学','武汉','西安','安交','海交','新疆','大连','广西'),array(' ',' ',' ',' 工业','北京 ',' ',' ','武汉 ','西安 ','安 交','海 交','新疆 ','大连 ','广西 '),$address);
$addresss = explode(" ",$address);

$address1 = $addresss[0];
$address2 = $addresss[1];
$address3 = $addresss[2];
$address4 = $addresss[3];

$query = dbQuery("select count(*) as num from ".weather_station." where province like '$address1' ");//查询 省字段 数目
$row = dbArray($query);

$number = $row["num"];


if($number>0 && $address2<>'' && $address1<>上海 && $address1<>重庆){
             unset($addresss[0]);
             }
if($address4==''){
                  unset($addresss[3]);
                 }
if($address3==''){
                  unset($addresss[2]);
                 }


$query = dbQuery("select count(*) as num from ".weather_station." where station like '$address4' ");//查询 县 字段
$row = dbArray($query);
$number = $row["num"];
if($number==0){
               unset($addresss[3]);
              }

$query = dbQuery("select count(*) as num from ".weather_station." where station like '$address3' ");//查询 县 字段
$row = dbArray($query);
$number = $row["num"];
if($number==0){
               unset($addresss[2]);
              }
//数组数据2 查询开始
$queryx = dbQuery("select count(*) as nums from ".weather_station." where station like '$address2' ");//查询 县 字段
$row = dbArray($queryx);
$nums = $row["nums"];

$queryy = dbQuery("select count(*) as numd from ".weather_station." where district like '$address2' ");//查询 市 字段
$row = dbArray($queryy);
$numd = $row["numy"];

if($nums==0 && $numd==0){
               unset($addresss[1]); // 如果 数组数据2 不在数据库里则删除数据2
              }
//数组数据2 查询结束

$query = dbQuery("select count(*) as num from ".weather_station." where district like '$address2' ");//查询 市 字段
$row = dbArray($query);
$number = $row["num"];
if($number>1 && $address3<>'' && $nums<>0 && $address2<>广州 ){
               unset($addresss[1]); // 如果数组数据2在数据库里有 多个 则删除数据2
              }

@extract(dbQuery("select count(*) as num_0 from ".weather_station." where district like '$address1' "));//查询 市 字段
@extract(dbQuery("select count(*) as num_1 from ".weather_station." where station like '$address2' "));//查询 县 字段
$number = $num_0;
$numbery = $num_1;
if($number>1 && $numbery>0 && $address2<>''){
               unset($addresss[0]); //如果数组数据1在数据库里有 多个 则删除数据1
              }

$addresss = implode("",$addresss);                           
return $addresss; // 结果


}

?>


<?php
// this file is mysql config

$dbhost = 'localhost';
$dbname = '********';
$dbuser = '********';
$dbpass = '******';

$prefix = '';

?>

[!--infotagslink--]

相关文章

  • 使用PHP+JavaScript将HTML页面转换为图片的实例分享

    这篇文章主要介绍了使用PHP+JavaScript将HTML元素转换为图片的实例分享,文后结果的截图只能体现出替换的字体,也不能说将静态页面转为图片可以加快加载,只是这种做法比较interesting XD需要的朋友可以参考下...2016-04-19
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Photoshop古装美女图片转为工笔画效果制作教程

    今天小编在这里就来给各位Photoshop的这一款软件的使用者们来说说把古装美女图片转为细腻的工笔画效果的制作教程,各位想知道方法的使用者们,那么下面就快来跟着小编一...2016-09-14
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • php抓取网站图片并保存的实现方法

    php如何实现抓取网页图片,相较于手动的粘贴复制,使用小程序要方便快捷多了,喜欢编程的人总会喜欢制作一些简单有用的小软件,最近就参考了网上一个php抓取图片代码,封装了一个php远程抓取图片的类,测试了一下,效果还不错分享...2015-10-30
  • jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮

    jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮...2013-10-13
  • 利用JS实现点击按钮后图片自动切换的简单方法

    下面小编就为大家带来一篇利用JS实现点击按钮后图片自动切换的简单方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-25
  • Photoshop枪战电影海报图片制作教程

    Photoshop的这一款软件小编相信很多的人都已经是使用过了吧,那么今天小编在这里就给大家带来了用Photoshop软件制作枪战电影海报的教程,想知道制作步骤的玩家们,那么下面...2016-09-14
  • js实现上传图片及时预览

    这篇文章主要为大家详细介绍了js实现上传图片及时预览的相关资料,具有一定的参考价值,感兴趣的朋友可以参考一下...2016-05-09
  • python opencv通过4坐标剪裁图片

    图片剪裁是常用的方法,那么如何通过4坐标剪裁图片,本文就详细的来介绍一下,感兴趣的小伙伴们可以参考一下...2021-06-04
  • 使用PHP下载CSS文件中的图片的代码

    共享一段使用PHP下载CSS文件中的图片的代码 复制代码 代码如下: <?php //note 设置PHP超时时间 set_time_limit(0); //note 取得样式文件内容 $styleFileContent = file_get_contents('images/style.css'); //not...2013-10-04
  • PHP swfupload图片上传的实例代码

    PHP代码如下:复制代码 代码如下:if (isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) { $upload_file = $_FILES['Filedata']; $fil...2013-10-04
  • 微信小程序如何获取图片宽度与高度

    这篇文章主要给大家介绍了关于微信小程序如何获取图片宽度与高度的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-10
  • C#中图片旋转和翻转(RotateFlipType)用法分析

    这篇文章主要介绍了C#中图片旋转和翻转(RotateFlipType)用法,实例分析了C#图片旋转及翻转Image.RotateFlip方法属性的常用设置技巧,需要的朋友可以参考下...2020-06-25
  • ps怎么制作图片阴影效果

    ps软件是现在很多人比较喜欢的,有着非常不错的使用效果,这次文章就给大家介绍下ps怎么制作图片阴影效果,还不知道制作方法的赶紧来看看。 ps图片阴影效果怎么做方法/...2017-07-06
  • OpenCV如何去除图片中的阴影的实现

    这篇文章主要介绍了OpenCV如何去除图片中的阴影的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-03-29
  • C#将图片和字节流互相转换并显示到页面上

    本文主要介绍用C#实现图片转换成字节流,字节流转换成图片,并根据图片路径返回图片的字节流,有需要的朋友可以参考下...2020-06-25
  • JavaScript 如何禁止用户保存图片

    这篇文章主要介绍了JavaScript 如何禁止用户保存图片,帮助大家完成需求,更好的理解和使用JavaScript,感兴趣的朋友可以了解下...2020-11-19
  • php上传图片学习笔记与心得

    我们在php中上传文件就必须使用#_FILE变量了,这个自动全局变量 $_FILES 从 PHP 4.1.0 版本开始被支持。在这之前,从 4.0.0 版本开始,PHP 支持 $HTTP_POST_FILES 数组。这...2016-11-25
  • JS实现图片的不间断连续滚动的简单实例

    下面小编就为大家带来一篇JS实现图片的不间断连续滚动的简单实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-06-12