发新话题
打印

关于FleaPHP登陆模块实例

关于FleaPHP登陆模块实例

给点阳光系列之一 —— 登陆

原作者:浪子快刀

先给出我的结构
复制内容到剪贴板
代码:
◎ www.wxmh.cn(网站结构根目录)
┣━ ◎ lib(程序代码--web无法直接访问这里)
┃ ┣ ◎ FLEA(fleaPHP框架文件)
┃ ┣ ◎ smarty(smarty类--版本为2.6.14)
┃ ┣ ◎ templates_c(smarty所编译的文件)
┃ ┗ ◎ wxmh(MVC相关)
┃ ┣ ◎ class(为该网站所写的类跟函数----为该站所特有的)
┃ ┣ ◎ Config(设置文件)
┃ ┣ ◎ Controller()
┃ ┣ ◎ GD(自己写的通用类文件)
┃ ┗ ◎ Model()

┗━ ◎ webRoot(网站根目录)
┣ ◎ admin(用户后台)
┗ ◎ wxmh(网站主程序)
说明一下,我自己写的东西,统一称为GD.之所以把GD目录放在wxmh(也就是用户网站目录)下,主要是为了能够使用FleaPHP里如load_class()之类的方法.这样比较方便一点.

给出我的COMMON_APP_INF.php,代码如下:
该文件位于\www.wxmh.cn\lib\wxmh\Config下
复制内容到剪贴板
代码:
<?php
return array(
    // 应用程序设置
    'controllerAccessor' => 'C',
    'urlLowerChar' => false, // 是否将 url 参数中包含的控制器名字和动作名字强制转为小写(默认就是关掉的)
    'responseCharset' => 'GB2312', // 指示 FleaPHP 输出内容的使用的编码
    'databaseCharset' => 'GB2312', // 当 FleaPHP 连接数据库时,要指定的编码, // 数据库连接
    'dbDSN' => array('driver' => 'mysql',
        'host' => 'localhost',
        'login' => 'root',
        'password' => '',
        'database' => 'marketplace_db',
    ),
    // 启动smarty模版
    'view' => 'FLEA_View_Smarty',
    'viewConfig' => array('smartyDir' => GD_LIB_PATH . '/Smarty',
        'template_dir' => GD_LIB_PATH,
        'compile_dir' => GD_LIB_PATH . '/templates_c',
        'left_delimiter' => '{{',
        'right_delimiter' => '}}',
    ),
);
?>
在admin目录下建议index.php文件,该文件内容如下:
复制内容到剪贴板
代码:
<?php
//====================================================
// FileName: index.php
// Summary: 后台的控制文件
// Author: lzkd(浪子快刀)/翁晖(外贸服装网)
// CreateTime: 2006-09-30
// LastModifed:
// copyright (c)2006
//====================================================

require_once( '../init.php' ); //载入系统初始文件
session_save_path( GD_WEB_PATH . '/admin/tmp' ); //建立session路径
require_once ( GD_FLEA_PATH . '/FLEA.php' ); //载入FleaPHP
@define( "GD_TPL_PATH", dirname(__FILE__) . "/template" ); //设定起用smarty模版后的模版文件存放地点
import( GD_LIBWEB_PATH ); //FleaPHP中所需要的路径指向
register_app_inf('wxmh/Config/COMMON_APP_INF.php'); //载入本站程序的基本配置文件
set_app_inf('defaultController', 'adminLogin'); //设定无任何参数默认的处理文件
run(); //运行程序
?>
在lib\wxmh\GD下建议文件action.php内容如下:
复制内容到剪贴板
代码:
<?php
//======================================================
// FileName: action.php
// Summary: 继承了FleaPHP的FLEA_Controller_Action
// 可以方便的加入自己喜欢的方法
// Author: lzkd(浪子快刀)/翁晖(外贸服装网)
// CreateTime:
// LastModifed:
// copyright (c)
//======================================================
class GD_action extends FLEA_Controller_Action
{
    /* 函数 isLoginned()
    ** 功能 判断用户是否登录
    ** 参数 无
    ** 返回 true 已登录 false 未登录
    */
    function isLoginned()
    {
        if(!empty($_SESSION['isLogin']))
        return true;
        else
        return false;
    }

    /* 函数 getParam( $name )
    ** 功能 取得页面参数
    ** 参数 $name 参数名字
    */
    function getParam( $name )
    {
        if( isset( $_REQUEST[$name] ) )
        {
            if( is_array( $_REQUEST[$name] ) )
            {
                return $_REQUEST[$name]; //这里可以修改一下,数组里的每个数也可以加上trim
            }
            else
            {
                return trim( $_REQUEST[$name] );
            }
        }
        else
        return null;
    }
}
?>

说明一下,以后所有的控制器都从这里派生出来.这么做的好处如下:

1 因为,GD_action继承了FLEA_Controller_Action,所以,可以很方便的生成一个控制器.
2 GD_action中可以加入你自己所习惯用的方法.
3 因为GD目录不在FLEA目录下,以后FLEA升级的时候很方便,直接把文件盖过去就可以了.
在lib\wxmh\Model下建议文件adminLink.php,内容如下:
复制内容到剪贴板
代码:
<?php
//======================================================
// FileName: adminLink.php
// Summary: 操作管理员登陆模型
// Author: lzkd(浪子快刀)/翁晖(外贸服装网)
// CreateTime:
// LastModifed:
// copyright (c)
//======================================================

//FLEA_Com_RBAC_UsersManager是FleaPHP中提供的操作用户登陆的模型
load_class('FLEA_Com_RBAC_UsersManager');

class Model_adminLink extends FLEA_Com_RBAC_UsersManager
{
    var $primaryKey = 'id'; //主键字段
    var $tableName = 'user'; //数据表名
    var $usernameField = 'user'; //用户名字段
    var $emailField = 'email'; //电邮字段
    var $passwordField = 'pass'; //密码字段
    var $rolesField = 'roles'; //角色字段
    var $encodeMethod = PWD_MD5; //加密方式
}
?>


说明一下,该类继承了FleaPHP中的FLEA_Com_RBAC_UsersManager,好处如下:
1 只要设定几个参数就可以直接使用FLEA_Com_RBAC_UsersManager中的方法.而且,我们一般不要去改FLEA_Com_RBAC_UsersManager中的默认值.理由很简单---以后升级方便
2 如果觉得FLEA_Com_RBAC_UsersManager里的方法还不够.可以在这里增加(或者放别的地方也可以)
在lib\wxmh\Controller下建议文件adminLogin.php,内容如下:
复制内容到剪贴板
代码:
<?php
//======================================================
// FileName: adminLogin.php
// Summary: 管理后台登陆
// Author: lzkd(浪子快刀)/翁晖(外贸服装网)
// CreateTime:
// LastModifed:
// copyright (c)
//======================================================

//GD_action继承了FleaPHP的FLEA_Controller_Action,这样做的好处是,可以
//在GD_action中放上自己所习惯的方法.
load_class('GD_action');

class Controller_adminLogin extends GD_Action
{
    //控制器的名字
    var $controllerName = 'adminLogin';

    //管理员登陆 对象实例
    var $_modelAdminLink;

    /* 函数 Controller_adminUser( $controllerName )
    ** 功能 构造函数
    ** 参数 $controllerName 应传入的控制器的名字
    */
    function Controller_adminLogin()
    {
        parent::FLEA_Controller_Action( $this->controllerName );
    }

    /* 函数 actionIndex()
    ** 功能 默认控制器方法
    ** 登陆相关
    ** 参数 无
    */
    function actionIndex()
    {
        if( $this->isLoginned() )
        {
            //已登陆,到后台首页
            echo '后台首页';
        }
        else
        {
            //没有登陆,返回到登陆页面
            if( $this->_isPOST() )
            {
                //如果是POST过来的进行登陆验证工作
                $this->_medelAdminLink = & get_singleton('Model_adminLink');
                //validateUser是FleaPHP本身提供的
                if( $this->_medelAdminLink->validateUser($this->getParam('user'), $this->getParam('pass')) )
                {
                    //通过检测
                    echo '后台首页';
                }
                else
                {
                    //未通过检测
                    $this->vAdminLogin();
                }
            }
            else
            {
                //如果不是POST过来的则
                $this->vAdminLogin();
            }
        }
    }

    /* 函数 vAdminLogin()
    ** 功能 登陆页面
    ** 参数 无
    */
    function vAdminLogin()
    {
        $smarty =& $this->_getView();
        $smarty->assign( 'loginUrl', $this->_url() );
        $smarty->display( GD_TPL_PATH . '/login.html');
    }
}
?>
说明一下,修改了一下老大教程中的构造函数,没有用Controller_adminLogin( $controllerName ),而是用了Controller_adminLogin().个人觉得应该一样,以后要改控制器名字,也别跑构造函数里改了,直接在上面就可以改了.

另,老大.控制器的名字是这么写吧?

还有,欠了一个注销登陆的内容.好象没必要写了哦,很简单的.

给出模版代码
复制内容到剪贴板
代码:
<form name="form1" action="{{$loginUrl}}" method="post">
<input type="text" name="user"><br>
<input type="password" name="pass"><br>
<input type="submit" name="提交" value="提交">
</form>
就这么多内容了,顺祝大家开心.天气渐渐凉了,小心身体.
支持FLEAPHP

TOP

很不错,谢谢楼主,

TOP

发新话题