用户中心增加新功能实例

1、在 user.php 文件修改

(1)、首先,考虑到用户中心的功能都是需要用户登录后才可以调用的。在 $ui_arr 数组中增加新的action

/* 显示页面的action列表 */
$ui_arr = array('register', 'login', 'profile', 'order_list', 'order_detail', 'address_list', 'collection_list',
'message_list', 'contribution_list', 'tag_list', 'get_password', 'reset_password', 'booking_list', 'add_booking', 'account_raply',
'account_deposit', 'account_log', 'account_detail', 'act_account', 'pay', 'default', 'bonus', 'group_buy', 'group_buy_detail', 'affiliate', 'comment_list','validate_email','track_packages', 'transform_points','qpassword_name', 'get_passwd_question', 'check_answer');

例如上面源码,我在 message_list 后面,增加了 contribution_list 新 action

这样才能保证新动作可以被顺利执行。

(2)、增加action判断,并执行相应的数据读取、传递工作。

/* 显示我的稿件列表 */
elseif ($action == 'contribution_list')
{
	include_once(ROOT_PATH . 'includes/lib_clips.php');
	
    $smarty->display('user_clips.dwt');
}
2、修改模板文件 user_clips.dwt。

         <!--*我的稿件 start-->
         <!-- {if $action eq 'contribution_list'} -->
同样也是使用判断 $action 的方式,来处理不同的 action 模板。

3、为了兼容不同的语言版本,模板文件中,通用的UI文字,通常使用语言文件进行定义。所以还需要修改语言文件 user.php

(1)、语言定义。

/* 稿件 */
$_LANG['contribution_number'] = '序号';
$_LANG['contribution_title'] = '广告标题';
$_LANG['contribution_status'] = '审核';
$_LANG['contribution_addtime'] = '时间';
(2)、模板中调用:
            <td bgcolor="#ffffff">{$lang.contribution_number}</td>
具体的数据库读取稍后补全。

4、读取数据库信息

(1)、读取统计信息

    $record_count = $db->getOne($sql);

分页之前,需要统计总数。

(2)、读取所有符合的记录

	$orders = $db->getAll($sql);
读取数据量不是很大的一批数据。

(3)、分页读取

分页函数:get_pager($url, $param, $record_count, $page = 1, $size = 10)

例如

    $pager = get_pager('user.php', $act, $record_count, $page, 5);
然后在读取数据库时,使用  $res = $GLOBALS['db']->SelectLimit($sql, $num, $start);  函数读取一页数据。

5、上传文件

(1)、前端UI

(2)、判断文件大小限制

/* 检查上传文件大小限制 */
	$upload_size_limit = $GLOBALS['_CFG']['upload_size_limit'] == '-1' ? ini_get('upload_max_filesize') : $GLOBALS['_CFG']['upload_size_limit'];

    $last_char = strtolower($upload_size_limit{strlen($upload_size_limit)-1});

    switch ($last_char)
    {
        case 'm':
            $upload_size_limit *= 1024*1024;
            break;
        case 'k':
            $upload_size_limit *= 1024;
            break;
    }

    if ($contrib['upload'])
    {
        if($_FILES['contribution_img']['size'] / 1024 > $upload_size_limit)
        {
            $GLOBALS['err']->add(sprintf($GLOBALS['_LANG']['upload_file_limit'], $upload_size_limit));
            return false;
        }
        $img_name = upload_file($_FILES['contribution_img'], 'contribimg');

        if ($img_name === false)
        {
            return false;
        }
    }

此段代码摘自 /includes/lib_clips.php ,其中配置参数$GLOBALS['_CFG']的文件路径待查。

(3)、判断文件类型限制

后台发布新文章时,还有检查上传文件的类型。

// 检查文件格式
        if (!check_file_type($_FILES['file']['tmp_name'], $_FILES['file']['name'], $allow_file_types))
        {
            sys_msg($_LANG['invalid_file']);
        }
留言时没有检查,我怀疑是否在保存文件函数中做了检查:
$img_name = upload_file($_FILES['contribution_img'], 'contribimg');
暂未查到 upload_file函数所在的文件路径。

6、入库

(1)、直接入库

(2)、封装入库操作到库函数

7、错误提示

(1)、后台错误提示

(2)、前台错误提示

if (add_message($message))
    {
        show_message($_LANG['add_message_success'], $_LANG['message_list_lnk'], 'user.php?act=message_list&order_id=' . $message['order_id'],'info');
    }
    else
    {
        $err->show($_LANG['message_list_lnk'], 'user.php?act=message_list');
    }
函数 show_message 用来提示成功的消息。相反,$err->show 用来提示失败的消息。

8、使用FCKeditor编辑器

(1)、引用文件和前台调用

(2)、后台接收数据







  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值