专为新手写的结合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访问数组最后一个元素的函数end()用法

    php访问数组最后一个元素的函数end()用法

    这篇文章主要介绍了php访问数组最后一个元素的函数end()用法,实例分析了php中end函数访问数组元素的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • PHP设计模式之观察者模式定义与用法分析

    PHP设计模式之观察者模式定义与用法分析

    这篇文章主要介绍了PHP设计模式之观察者模式定义与用法,结合实例形式分析了php观察者模式的概念、原理、用法及相关操作注意事项,需要的朋友可以参考下
    2019-04-04
  • 谨慎使用PHP的引用原因分析

    谨慎使用PHP的引用原因分析

    PHP中也引入了引用类型,在对对象赋值传递上,基本可视为是同于Java/C#的引用传递(具体请见Objects and references)。但同时又支持在基础类型上通过引用运算符(&)来获得内容的引用。不过在实际的使用中,PHP的引用类型因为整个PHP设计结构而存在着许多的问题,使得在程序出现非预计的结果
    2012-09-09
  • php字符串截取的简单方法

    php字符串截取的简单方法

    这篇文章介绍了php字符串截取的简单方法,有需要的朋友可以参考一下
    2013-07-07
  • 详解WordPress中调用评论模板和循环输出评论的PHP函数

    详解WordPress中调用评论模板和循环输出评论的PHP函数

    这篇文章主要介绍了WordPress中调用评论模板和循环输出评论的PHP函数,分别是comments_template函数与wp_list_comments函数的使用,需要的朋友可以参考下
    2016-01-01
  • php 中英文语言转换类

    php 中英文语言转换类

    想做个中英文的功能试一下,只是把一些常用且有规律的词汇比如 ‘评论’ ,时间单位(几秒几小时前这些)可以自由的转化。
    2011-09-09
  • CentOS系统中PHP安装扩展的方式汇总

    CentOS系统中PHP安装扩展的方式汇总

    本文给大家汇总介绍了CentOS系统中PHP安装拓展的方式,主要有 包管理式 的 yum 安装、pecl 安装,以及 源码编译安装。总结的非常全面,推荐给大家。
    2017-04-04
  • PHP中的错误处理、异常处理机制分析

    PHP中的错误处理、异常处理机制分析

    在编写php程序时,错误处理是一个重要的部分。如果程序中缺少错误检测代码,那么看上去很不专业,也为安全风险敞开了大门
    2012-05-05
  • PHP 动态随机生成验证码类代码

    PHP 动态随机生成验证码类代码

    这个利用PHP动态随机生成验证码的类是在LAMP的书上看到的。感觉写的很好就收藏了下来。
    2010-04-04
  • php简单压缩css样式示例

    php简单压缩css样式示例

    这篇文章主要介绍了php简单压缩css样式的方法,涉及文件读取及字符替换等相关操作技巧,需要的朋友可以参考下
    2016-09-09

最新评论