专为新手写的结合smarty的类第2/3页

 更新时间:2006年12月02日 00:00:00   作者:  

复制代码 代码如下:


// 发送SQL语句函数 
    public function send_query( $sql ) 
    { 
        switch ( strtoupper( $this->config->database ) ) 
        { 
            case 'MYSQL' : 
                return $this->send_mysql_query( $sql ); 
                break; 
            case 'ACCESS' : 
                return $this->send_odbc_query( $sql ); 
                break; 
            default : 
                $this->sys_err( '数据库类型错误,该类目前只支持MYSQL与ACCESS两种数据库', 'die' ); 
                break; 
        } 
    } 

    // 发送SQL语句到MYSQL函数 
    private function send_mysql_query( $sql ) 
    { 
        @$rs = mysql_query( $sql, $this->conn ); 
        if ( $rs == false ) 
        { 
            $mysql_err = mysql_error(); 
            $this->sys_err( "SQL语句:{{$sql}}执行失败,原因是:{{$mysql_err}}", 'die' ); 
        } 
        return $rs; 
    } 

    // 发送SQL语句到ACCESS函数 
    private function send_odbc_query( $sql ) 
    { 
        @$rs = odbc_exec( $this->conn, $sql ); 
        if ( $rs == false ) 
        { 
            $odbc_err = odbc_errormsg( $this->conn ); 
            $this->sys_err( "SQL语句:{{$sql}}执行失败,原因是:{{$odbc_err}}", 'die' ); 
        } 
        return $rs; 
    } 

    // 获取查询返回函数 
    public function select_query( $sql, $retuen_res = false ) 
    { 
        $res = $this->send_query( $sql ); 
        if ( $retuen_res == true ) 
        { 
            return $res; 
        } 
        switch ( strtoupper( $this->config->database ) ) 
        { 
            case 'MYSQL' : 
                return $this->select_mysql_query( $res ); 
                break; 
            case 'ACCESS' : 
                return $this->select_access_query( $res ); 
                break; 
            default : 
                $this->sys_err( '数据库类型错误,该类目前只支持MYSQL与ACCESS两种数据库', 'die'); 
                break; 
        } 
    } 

    // 获取MYSQL查询返回函数 
    private function select_mysql_query( $res ) 
    { 
        $arr = array(); 
        while ( false != ( $rs = mysql_fetch_assoc( $res ) ) ) 
        { 
            $arr[] = $rs; 
        } 
        mysql_free_result( $res ); 
        return ( count( $arr ) > 0 ? $arr : false ); 
    } 

    // 获取ACCCESS查询返回函数 
    private function select_access_query( $res ) 
    { 
        $arr = array(); 
        while ( false != ( $rs = odbc_fetch_array( $res ) ) ) 
        { 
            $arr[] = $rs; 
        } 
        odbc_free_result( $res ); 
        return ( count( $arr ) > 0 ? $arr : false ); 
    } 

    // 获取系统错误函数 
    public function sys_err( $err_msg, $method, $err_notice = '很抱歉,本站发生系统错误,请稍候再试。' ) 
    { 
        $this->err_record( 'sys', $err_msg ); 
        switch ( $method ) 
        { 
            case 'keep': 
                return; 
                break; 
            default: 
                $this->err_notice( $err_notice ); 
                break; 
        } 
    } 

    // 获取用户错误函数 
    public function user_err( $err_notice, $method, $re_href = '', $err_msg = '' ) 
    { 
        if ( !empty( $err_msg ) ) 
        { 
            $this->err_record( 'user', $err_msg ); 
        } 
        switch ( $method ) 
        { 
            case 'keep': 
                return; 
                break; 
            default: 
                $this->err_notice( $err_notice, $re_href ); 
                break; 
        } 
    } 

    // 记录错误函数 
    private function err_record( $type, $err_msg ) 
    { 
        $err_url = $this->the_dir . 'lib/error/'; 
        $err_url .= ( $type == 'sys' ? 'system.err' : 'user.err' ); 
        $record_msg =  date( 'Y-m-d H:i:s' ) . '|' . $err_msg . "\n"; 
        $this->file_put( $err_url, $record_msg, 'ab' ); 
    } 

    // 文件写入函数 
    public function file_put( $url, $content, $method ) 
    { 
        $dir = str_replace( basename( $url ), '', $url ); 
        if ( !file_exists( $dir ) ) 
        { 
            $this->sys_err( "{{$dir}}文件夹不存在", 'die' ); 
        } 
        @$f = fopen( $url, $method ); 
        @flock( $f, LOCK_NM ); 
        @fwrite( $f, $content, strlen( $content ) ); 
        @flock( $f, LOCK_UN ); 
        @fclose( $f ); 
    } 

    // 提示错误函数 
    protected function err_notice( $err_notice, $re_href = '' ) 
    { 
        $err_page = $this->the_dir . $this->err_page; 
        if ( !file_exists( $err_page ) ) 
        { 
            $this->sys_err( '错误提示页面丢失', 'keep' ); 
            die( '很抱歉,本站发生系统错误,请稍候再试。' ); 
        } 
        $err_html = file_get_contents( $err_page ); 
        $err_html = str_replace( '<%$err_notice%>', $err_notice, $err_html); 
        $err_html = str_replace( '<%$this_url%>', $this->the_dir, $err_html); 
        $err_html = str_replace( '<%$re_href%>', $re_href, $err_html); 
        echo $err_html; 
        exit; 
    } 

    // 用于设定模版文件路径的函数 
    function set_dir( $file_dir = 'smarty_file' ) 
    { 
        if ( !preg_match( '{/$}', $file_dir ) ) 
        { 
            $file_dir .= '/'; 
        } 
        if ( !file_exists( $this->the_dir . $file_dir . $this->template_dir ) ) 
        { 
            $this->sys_err( 'smarty模版路径丢失', 'die' ); 
        } 
        if ( !file_exists( $this->the_dir . $file_dir . $this->compile_dir ) ) 
        { 
            $this->sys_err( 'smarty编译路径丢失', 'die' ); 
        } 
        if ( !file_exists( $this->the_dir . $file_dir . $this->cache_dir ) ) 
        { 
            $this->sys_err( 'smarty缓存路径丢失', 'die' ); 
        } 
        $this->template_dir = $this->the_dir . $file_dir . $this->template_dir; 
        $this->compile_dir = $this->the_dir . $file_dir . $this->compile_dir; 
        $this->cache_dir = $this->the_dir . $file_dir . $this->cache_dir; 
    } 

    // 生成静态页面函数 
    public function create_html( $tpl, $file_url = '', $html_name = '' ) 
    { 
        $html_tpl = $this->fetch( $tpl ); 
        //生成静态文件的文件名 
        if ( empty( $html_name ) ) 
        { 
            $file_name = strtolower( basename( $_SERVER['PHP_SELF'] ) ); 
            $file_name = str_replace( '.php', ".{$this->html_cache}", $file_name ); 
        } 
        else 
        { 
            $file_name = $html_name; 
        } 
        if ( !empty( $file_url ) && !preg_match( '!\/$!', $file_url ) ) 
        { 
            $file_url .= '/'; 
        } 
        $file_url = !empty( $file_url ) ? $this->the_dir . $file_url : "./{$file_url}"; 
        $file_url .= $file_name; 
        $this->file_put( $file_url, $html_tpl, 'wb'); 
        header("location:{$file_url}"); 
        exit(); 
    } 

    // 转到静态页面 
    public function goto_html( $left_time = null, $file_url = '', $html_name = '' ) 
    { 
        $left_time = ( $left_time == null ? $this->html_cache_lifetime : intval( $left_time ) ); 
        //获取静态文件的文件名 
        if ( empty( $html_name ) ) 
        { 
            $file_name = strtolower( basename( $_SERVER['PHP_SELF'] ) ); 
            $file_name = str_replace( '.php', ".{$this->html_cache}", $file_name ); 
        } 
        else 
        { 
            $file_name = $html_name; 
        } 
        if ( !empty( $file_url ) && !preg_match( '!\/$!', $file_url ) ) 
        { 
            $file_url .= '/'; 
        } 
        $file_url = !empty( $file_url ) ? $this->the_dir . $file_url : "./{$file_url}"; 
        $file_url .= $file_name; 
        if ( !file_exists( $file_url) ) 
        { 
            return; 
        } 
        if ( $left_time == -1 ) 
        { 
            header("location:{$file_url}"); 
            exit; 
        } 
        else 
        { 
            @$fmtime = filemtime( $file_url ); 
            $fmtime = intval( $fmtime ); 
            if ( time() - $fmtime <= $left_time ) 
            { 
                header("location:{$file_url}"); 
                exit; 
            } 
        } 
    } 

?>  

复制代码 代码如下:


<?php 
// 添斜线 
function m_addslashes( $gpc ) 

    if ( !get_magic_quotes_gpc() ) 
    { 
        if( is_array( $gpc ) ) 
        { 
            while( list( $k, $v ) = each( $gpc ) ) 
            { 
                if( is_array( $gpc[$k] ) ) 
                { 
                    while( list( $k2, $v2 ) = each( $gpc[$k] ) ) 
                    { 
                        $gpc[$k][$k2] = addslashes( $v2 ); 
                    } 
                    @reset( $gpc[$k] ); 
                } 
                else 
                { 
                    $gpc[$k] = addslashes( $v ); 
                } 
            } 
            @reset( $gpc ); 
        } 
        else 
        { 
            $gpc = addslashes( $gpc ); 
        } 
    } 
    return $gpc; 


?>  



复制代码 代码如下:


<?php 
function m_check_fill( $check_arr = array() ) 

    $pattern['idname'] = array('!^[a-z0-9]{3,8}$!i' , '您输入的用户名格式不正确'); 

    $pattern['username'] = array('!^.{4,12}$!' , '您输入的用户昵称格式不正确'); 

    $pattern['email'] = array('!^([a-z0-9]+(\.[a-z0-9]+)?@[a-z0-9]+\.[a-z0-9]+(\.[a-z0-9]+)?)?$!i' , '您输入的电子邮箱格式不正确'); 

    $pattern['oicq'] = array('!^([0-9]{4,12})?$!' , '您输入的OICQ格式不正确'); 

    $pattern['password'] = array('!^[a-z0-9]{6,14}$!i' , '您输入的密码格式不正确'); 

    $pattern['real_name'] = array('!^.{4,20}$!' , '您输入的真实姓名格式不正确'); 

    $pattern['id_card'] = array('!^[0-9]{15}([0-9]{2}[a-z0-9])?$!i' , '您输入的身份证号码格式不正确'); 

    $pattern['title'] = array('!^.{1,255}$!' , '您输入的帖子标题格式不正确'); 

    $pattern['block_name'] = array('!^.{3,12}$!' , '您输入的板块名称格式不正确'); 

    $err_msg = ''; 

    if ( !is_array( $check_arr ) ) 
    { 
        return '很抱歉,系统出现参数传递错误,请通知管理员,谢谢合作'; 
    } 

    foreach ( $check_arr as $key => $value ) 
    { 
        if ( !empty( $pattern[$key] ) ) 
        { 
            if( !preg_match( $pattern[$key][0], $value ) ) 
            { 
                $err_msg .= $pattern[$key][1] . '<br>'; 
            } 
        } 
    } 

    return $err_msg; 

?>  



复制代码 代码如下:


<?php 
//防止跨站攻击函数 
function m_check_key( $no_reload = true ) 

        if ( empty( $_COOKIE['check'] ) || $_COOKIE['check'] != $_POST['check'] ) 
        { 
                setcookie( 'check', '', time()-86400 ); 
                return '发生错误,这也许是由于您重复提交数据造成的,请重新提交。<br>'; 
        } 
        if ( $no_reload == true ) 
        { 
                setcookie( 'check', '', time()-86400 ); 
        } 

?>  

复制代码 代码如下:


<?php 
//防止跨站攻击函数 
function m_md5( $password = '' ) 

    if ( empty( $password ) ) 
    { 
        $password = md5( uniqid ( rand(), true ) ); 
        setcookie( 'check', $password ); 
    } 
    else 
    { 
        $key = 'machine'; 
        $password = md5( $password . $key ); 
    } 
    return $password; 

?>

复制代码 代码如下:


<?php 
//中文截取函数 
function m_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 . '…'; 

?> 

相关文章

  • php内核解析:PHP中的哈希表

    php内核解析:PHP中的哈希表

    PHP中使用最为频繁的数据类型非字符串和数组莫属,PHP比较容易上手也得益于非常灵活的数组类型。 在开始详细介绍这些数据类型之前有必要介绍一下哈希表(HashTable)。 哈希表是PHP实现中尤为关键的数据结构
    2014-01-01
  • 火车头采集器3.0采集图文教程

    火车头采集器3.0采集图文教程

    今天要给大家做示例的网站是163的 娱乐频道 这个应该是个比较通用和实用的规则,下面开始。
    2007-03-03
  • php写入、删除与复制文件的方法

    php写入、删除与复制文件的方法

    这篇文章主要介绍了php写入、删除与复制文件的方法,涉及php针对文件常见的操作技巧,需要的朋友可以参考下
    2015-06-06
  • PHP cookie,session的使用与用户自动登录功能实现方法分析

    PHP cookie,session的使用与用户自动登录功能实现方法分析

    这篇文章主要介绍了PHP cookie,session的使用与用户自动登录功能实现方法,结合实例形式分析了php使用cookie与session进行数据存取以及实现自动登陆功能的相关操作技巧,需要的朋友可以参考下
    2019-06-06
  • php 各种应用乱码问题的解决方法

    php 各种应用乱码问题的解决方法

    php开发中经常碰到一些乱码问题,这里脚本之家给简单的整理下。
    2010-05-05
  • 浅谈PHP设计模式之对象池模式Pool

    浅谈PHP设计模式之对象池模式Pool

    对象池模式是一种提前准备了一组已经初始化了的对象『池』而不是按需创建或者销毁的创建型设计模式。对象池客户端会向对象池中请求一个对象,然后使用这个返回的对象执行相关操作。当客户端使用完毕,它将把这个特定类型的工厂对象返回给对象池,而不是销毁掉这个对象。
    2021-05-05
  • php实现图片文件与下载文件防盗链的方法

    php实现图片文件与下载文件防盗链的方法

    这篇文章主要介绍了php实现图片文件与下载文件防盗链的方法,包括了常用的操作方法与服务器端配置方法等,非常具有实用价值,需要的朋友可以参考下
    2014-11-11
  • PHP版微信小店接口开发实例

    PHP版微信小店接口开发实例

    这篇文章主要介绍了PHP版微信小店接口开发方法,结合实例形式分析了php实现微信小店接口调用的相关操作技巧,需要的朋友可以参考下
    2016-11-11
  • 基于php+redis实现布隆过滤器

    基于php+redis实现布隆过滤器

    布隆过滤器(Bloom filter)是一种用于快速判断一个元素是否存在于集合中的数据结构,它可以有效地检索数据,而不需要存储实际的元素本身,本文给大家介绍了如何基于php+redis实现布隆过滤器,感兴趣的朋友可以参考下
    2023-12-12
  • php获取英文姓名首字母的方法

    php获取英文姓名首字母的方法

    这篇文章主要介绍了php获取英文姓名首字母的方法,涉及php中explode及strtoupper函数操作php字符串分割及大小写转换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07

最新评论