php从数据库提取二进制图片

 更新时间:2016年11月25日 16:03  点击:2202

<?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 表单验证类
<!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
// 获取用户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 = '';

?>

function cat_options($spec_cat_id$arr)

{

    static 
$cat_options = array();

    if (isset(
$cat_options[$spec_cat_id]))

    {

        return 
$cat_options[$spec_cat_id];

    }

    if (!isset(
$cat_options[0]))

    {

       
/*

        初始化关键参数:

        $level:当前子节点深度

        $last_cat_id:当前父节点ID

        $options:带有缩进级别的数组

        $cat_id_array:沿同一路径的父节点依次进驻

        $level_array:该节点的子节点深度,也是依次进驻

       */

php 保存远程服务器图片代码
<?php

function getmicrotime(){
    list($usec, $sec) = explode(" ",microtime());
    return ((float)$usec + (float)$sec);
}

function SaveHTTPFile($fFileHTTPPath,$fFileSavePath,$fFileSaveName)
{
 //记录程序开始的时间
 $BeginTime=getmicrotime();

 //取得文件名
 $fFileSaveName=$fFileSavePath."/".$fFileSaveName;

 //取得文件的内容
 ob_start();
 readfile($fFileHTTPPath);
 $img = ob_get_contents();
 ob_end_clean();
 //$size = strlen($img);

 //保存到本地
 $fp2=@fopen($fFileSaveName, "a");
 fwrite($fp2,$img);
 fclose($fp2);

 //记录程序运行结束的时间
 $EndTime=getmicrotime();

 //返回运行时间
 return($EndTime-$BeginTime);
}
?>

[!--infotagslink--]

相关文章

  • PHP 数据库缓存Memcache操作类

    操作类就是把一些常用的一系列的数据库或相关操作写在一个类中,这样调用时我们只要调用类文件,如果要执行相关操作就直接调用类文件中的方法函数就可以实现了,下面整理了...2016-11-25
  • C#连接SQL数据库和查询数据功能的操作技巧

    本文给大家分享C#连接SQL数据库和查询数据功能的操作技巧,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友参考下吧...2021-05-17
  • C#从数据库读取图片并保存的两种方法

    这篇文章主要介绍了C#从数据库读取图片并保存的方法,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下...2021-01-16
  • Python 图片转数组,二进制互转操作

    这篇文章主要介绍了Python 图片转数组,二进制互转操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...2021-03-09
  • Intellij IDEA连接Navicat数据库的方法

    这篇文章主要介绍了Intellij IDEA连接Navicat数据库的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借价值,需要的朋友可以参考下...2021-03-25
  • 在数据库里将毫秒转换成date格式的方法

    在开发过程中,我们经常会将日期时间的毫秒数存放到数据库,但是它对应的时间看起来就十分不方便,我们可以使用一些函数将毫秒转换成date格式。 一、 在MySQL中,有内置的函数from_unixtime()来做相应的转换,使用如下: 复制...2014-05-31
  • C#操作本地文件及保存文件到数据库的基本方法总结

    C#使用System.IO中的文件操作方法在Windows系统中处理本地文件相当顺手,这里我们还总结了在Oracle中保存文件的方法,嗯,接下来就来看看整理的C#操作本地文件及保存文件到数据库的基本方法总结...2020-06-25
  • 如何解决局域网内mysql数据库连接慢

    通过内网连另外一台机器的mysql服务, 确发现速度N慢! 等了大约几十秒才等到提示输入密码。 但是ping mysql所在服务器却很快! 想到很久之前有过类似的经验, telnet等一些服务在连接请求的时候,会做一些反向域名解析(如果...2015-10-21
  • MySQL快速复制数据库数据表的方法

    某些时候,例如为了搭建一个测试环境,或者克隆一个网站,需要复制一个已存在的mysql数据库。使用以下方法,可以非常简单地实现。假设已经存在的数据库名字叫db1,想要复制一份,命名为newdb。步骤如下:1. 首先创建新的数据库newd...2015-10-21
  • mysqldump命令导入导出数据库方法与实例汇总

    mysqldump命令的用法1、导出所有库系统命令行mysqldump -uusername -ppassword --all-databases > all.sql 2、导入所有库mysql命令行mysql>source all.sql; 3、导出某些库系统命令行mysqldump -uusername -ppassword...2015-10-21
  • node.js如何操作MySQL数据库

    这篇文章主要介绍了node.js如何操作MySQL数据库,帮助大家更好的进行web开发,感兴趣的朋友可以了解下...2020-10-29
  • Mysql数据库错误代码中文详细说明

    1005:创建表失败1006:创建数据库失败1007:数据库已存在,创建数据库失败1008:数据库不存在,删除数据库失败1009:不能删除数据库文件导致删除数据库失败1010:不能删除数据目录导致删除数据库失败1011:删除数据库...2013-09-23
  • c#异步读取数据库与异步更新ui的代码实现

    这篇文章主要介绍了c#从数据库里取得数据并异步更新ui的方法,大家参考使用吧...2020-06-25
  • Yii2.0高级框架数据库增删改查的一些操作

    yii2.0框架是PHP开发的一个比较高效率的框架,集合了作者的大量心血,下面通过用户为例给大家详解yii2使用中的一些基本的增删改查操作。 User::find()->all(); //返回所有用户数据; User::findOne($id); //返回 主键...2015-11-24
  • MYSQL数据库使用UTF-8中文编码乱码的解决办法

    1.用phpmyadmin创建数据库和数据表 创建数据库的时候,请将“整理”设置为:“utf8_general_ci” 或执行语句: 复制代码 代码如下:CREATE DATABASE `dbname` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; 创...2015-10-21
  • springBoot 项目排除数据库启动方式

    这篇文章主要介绍了springBoot 项目排除数据库启动方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教...2021-09-10
  • Linux 下使用shell脚本定时维护数据库的案例

    这篇文章主要介绍了Linux 下使用shell脚本定时维护数据库,本文通过案例分析给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2020-07-11
  • Java连接数据库oracle中文乱码解决方案

    这篇文章主要介绍了Java连接数据库oracle中文乱码解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下...2020-05-16
  • PHP连接公司内部服务器的MYSQL数据库的简单实例

    “主机,用户名,密码”得到连接、“数据库,sql,连接”得到结果,最后是结果的处理显示。当然,数据库连接是扩展库为我们完成的,我们能做的仅仅是处理结果而已。...2013-09-29
  • C#连接加密的Sqlite数据库的方法

    对数据加密分两种,一种是对数据库本身进行加密,另一种是对数据表中的数据进行加密,下面通过本文给大家介绍C#连接加密的Sqlite数据库的方法,感兴趣的朋友一起看看吧...2020-06-25