喜悦国际村 » 喜悦原创 » 专为新手写的结合smarty的类,请大家多多指点

页: [1]
machine_马2006-11-24 07:24 AM
专为新手写的结合smarty的类,请大家多多指点

这个是为新手(也为自己)写的结合smarty一起使用的类,是未完成的,所以现在放出来的目的不是马上让新手使用,
而是希望各位高手多多提意见,我尽量完善它。
    首先声明,我写这个的目的也是为了锻炼自己,尽管我知道现在已经有很多类似的类了,但是我还是决定来写一个,
所以请大家在浏览的时候口下留情。

目前该类包括以下功能
[数据库]
目前支持MYSQL与ACCESS两种数据库
配置与使用都简单快捷

[错误处理]
分为系统错误和用户错误

[静态生成]
自动生成静态页面(不完全的静态,完全的比较复杂,目前不考虑)
可设置静态页面过期时间

[二维数组排序]
可以让二维数组作类似:“先按字段a升序,再按字段b降序”这样的排序

[动态加载]
对于不常用的功能,我采用加载的方法来使用,个人认为这样可以节约资源

[分页]
这里我也不知道做得好不好,我是先写了一个类,再写一个函数来调它,目的是使用得时候比较方便

[验证表单]
把需要验证的表单事先写进函数类,判别的时候只需要把$_POST传入就可以了

[防止跨站攻击]
把这个功能也写道一个函数内了

[中文截取函数]
不是我写的,拿来修改了一下而已

[UBB代码输出]
实现自己的UBB(未完成)

目前已经基本实现就是以上功能了
接下来还打算做

[图片处理]
[上传文件]
等一些其他常用功能

希望各位高手多多提意见

顺便放一则广告
我将是2007届应届毕业生,数学与应用数学本科专业,有一年中小型PHP项目工作经验(在校期间兼职)
熟悉PHP,MYSQL,WINBINDER,HTML,DW,ZEND
了解APACHE,AJAX,JAVASCRIPT,PHOTOSHOP,C++,CSS
正在学习LINUX

有很强的自学能力,在校期间担任校网络部部长,校思政网站长,有高度的团队意识与责任心。
有项目策划、构架与安排能力。

如果有公司觉得我还行,请联系我(QQ:76910637,EMAIL:msr182@163.com)

machine_马2006-11-24 07:25 AM
配置文件:config.php
[code]
;**********************
;*****<?php/***********
;**********************

;如果是使用access数据库,请把下面database的值改为access
[chose database]
database = mysql

[normal info]
db_name = machine_bbs
user_name = root
password = 123456

[mysql]
host_name = localhost

;**********************
;**********************
;********/?>***********
[/code]

machine_马2006-11-24 07:26 AM
配置文件func_list.php
[code]
;**********************
;*****<?php/***********
;**********************

[function_list]
m_page = lib/function/m_page.php
m_out_put = lib/function/m_out_put.php
m_cnsubstr = lib/function/m_cnsubstr.php
m_check_key = lib/function/m_check_key.php
m_check_fill = lib/function/m_check_fill.php

;**********************
;**********************
;********/?>***********
[/code]

machine_马2006-11-24 07:29 AM
验证表单函数m_check_fill.php
[php]
<?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]

[[i] 本帖最后由 machine_马 于 2006-11-24 03:43 PM 编辑 [/i]]

machine_马2006-11-24 07:31 AM
中文截取函数m_cnsubstr.php
[php
<?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]

[[i] 本帖最后由 machine_马 于 2006-11-24 03:44 PM 编辑 [/i]]

machine_马2006-11-24 07:36 AM
防止跨站攻击函数:m_check_key.php
[php]
<?php
function m_check_key( $no_reload = true )
{
        if ( empty( $_SESSION['check'] ) || $_SESSION['check'] != $_POST['check'] )
        {
                unset( $_SESSION['check'] );
                return '发生错误,这也许是由于您重复提交数据造成的,请重新提交。<br>';
        }
        if ( $no_reload == true )
        {
                unset( $_SESSION['check'] );
        }
}
?>
[/php]

[[i] 本帖最后由 machine_马 于 2006-11-24 03:44 PM 编辑 [/i]]

chaizx2006-11-24 12:36 PM
好文章,顶一个了!

fly5122006-11-24 01:41 PM
越是基础的东西,越是不能用别人的

打好基础是很重要的

machine_马2006-11-25 08:44 AM
文本操作函数
[php]
<?php
// 修改
function txt_replace( $pattern, $text, $content )
{
        $pattern_start =  "<!--$pattern-->";
        $pattern_end =  "<!--/$pattern-->";
        @$ok = preg_match( "{{$pattern_start}.*{$pattern_end}}Ssi", $content, $match );
        if ( $ok != true )
        {
                return false;
        }
        $replace = "{$pattern_start}{$text}{$pattern_end}";
        $new_content = str_replace( $match[0], $replace, $content );
        return $new_content;
}

// 追加
function txt_add( $pattern, $text, $content )
{
        $pattern = "<!--{$pattern}-->";
        @$ok = preg_match( "{{$pattern}}Ssi", $content );
        if ( $ok != true )
        {
                return false;
        }
        $add = "{$pattern}\n{$text}";
        $new_content = str_replace( $pattern, $add, $content );
        return $new_content;
}

// 删除
function txt_delete( $pattern, $content )
{
        $pattern_start =  "<!--$pattern-->";
        $pattern_end =  "<!--/$pattern-->";
        @$ok = preg_match( "{{$pattern_start}.*{$pattern_end}}Ssi", $content, $match );
        if ( $ok != true )
        {
                return false;
        }
        $new_content = str_replace( $match[0], '', $content );
        return $new_content;
}
?>
[/php]

machine_马2006-11-25 01:10 PM
fly512
看了你的作品
仰慕之情由心而生 由感而发

machine_马2006-11-30 05:17 PM
竟然没人理,失望ing
并且发了的帖,20分钟之后就不可以在修改了
这样程序更新了都没法修改,郁闷ing
失望+郁闷=以后不上来发帖了

剑枫2006-12-1 10:30 AM
好东西
强烈支持

qh6632006-12-3 04:56 PM
不错的东西。收藏一下。也指出一点缺点。mysql与access要分别写在两个文件里,然后根据配置所选再分别调用,这样会比较好一点

Carrey2006-12-5 02:47 PM
嗯`受益良多,谢谢LZ了``


查看完整版本: 专为新手写的结合smarty的类,请大家多多指点


Powered by Discuz! Archiver 6.1.0  © 2001-2006 Comsenz Inc.
Processed in 0.006763 second(s), 2 queries