FLEAPHP 多语言:
1. 配置文件APP_INF.php中,写入你要用的语言的名称
/**
* 指示可用的语言
*/
'languages' => array(
'简体中文' => 'simplified',
'繁体中文' => 'traditional',
'English' => 'english',
),
/**
* 指示默认语言
*/
'defaultLanguage' => 'simplified',
2.建立Controller_Base类:所有controller层类文件的父类。
function Controller_Base() {
//URL中是否带有语言参数
$lang = (isset($_GET['language']) && trim($_GET['language']) != '') ? trim($_GET['language']) : '';
//如果URL中没有带语言参数,则从cookie中判断是否有之前保存的语言选择记录
if ($lang == '') {
$lang = isset($_COOKIE['language'])? $_COOKIE['language'] : '';
}
//获取系统默认的语言参数
$localLang = $this->getLocalLang();
$lang = ($lang == '') ? $localLang : $lang;
//将语言写进cookie里
setcookie("language", $lang, time() + 2592000);
//获取配置中所有的语言
$languages = FLEA::getAppInf('languages');
//判断获取的语言是否在配置的语言数组中,并调用语言参数设置函数
if (in_array($lang, $languages, true)) {
FLEA::setAppInf('defaultLanguage', $lang);
}
//加载语言文件
load_language('ui');
}
//获取本地操作系统语言
function getLocalLang() {
$localLang = $_SERVER["HTTP_ACCEPT_LANGUAGE"]; // system language
if (preg_match ("/^(zh-cn)|(zh-sg)/i", $localLang)) {
$lang = 'simplified';
}
if (preg_match ("/^(zh-tw)|(zh-mo)|(zh-hk)|(zh-sg)/i", $localLang)) {
$lang = 'traditional';
}
if (preg_match ("/^(en)|(en-ie)|(en-au)|(en-ca)|(en-us)|(en-nz)|(en-qb)/i", $localLang)){
$lang = "english"; // en
}
return $lang;
}
--------------------------------------------------------------------------------------------
参考:http://www.dayanmei.com/blog.php/ID_1234.htm
FLEAPHP访问权限问题
1. 配置文件APP_INF.php中指定ACT文件
/**
* 指定要使用的调度器
*/
'dispatcher' => 'FLEA_Dispatcher_Auth',
/**
* 使用默认的控制器 ACT 文件
*
* 这样可以避免为每一个控制器都编写 ACT 文件
*/
'defaultControllerACTFile' => dirname(__FILE__) . DS . 'DefaultACT.php',
2.登录模块:Login文件
class Controller_Login extends FLEA_Controller_Action
{
function actionLogin() {
//验证用户名密码成功后
$rbac =& FLEA::getSingleton('FLEA_Rbac');
$data['username'] = $user['username'];
$data['id'] = $user['id'];
$rbac->setUser($data, $user['roleid']);
$user = $rbac->getUser();
$_SESSION['user'] = $user;
//print_r($_SESSION);
/*
Array (
[user] => Array (
[last_signin_time] => 2010-05-31 15:24:51
[id] => 1
[username] => admin
[RBAC_ROLES] => 1 /*这个就是以后用到ACT文件中的值,数据库里对应的roles表 1 =>super administrator*/
[session_life_time] => 6000 )
)
*/
}
}
3. DefaultACT.php
return array(
/**
* Login 控制器
*/
'Login' => array('allow' => RBAC_NULL,
'actions' => array(
'Index' => array('allow' => RBAC_EVERYONE),
'Logout' => array('allow' => '1,2'),
'Login' => array('allow' => RBAC_EVERYONE)
)
),
/**
* Index 控制器
*/
'Index' => array('allow' => RBAC_NULL,
'actions' => array(
'Index' => array('allow' => RBAC_EVERYONE),
'About' => array('allow' => RBAC_EVERYONE),
'Sitemap' => array('allow' => RBAC_EVERYONE),
'Adminindex' => array('allow' => '1,2'),
)
),
1. 配置文件APP_INF.php中,写入你要用的语言的名称
/**
* 指示可用的语言
*/
'languages' => array(
'简体中文' => 'simplified',
'繁体中文' => 'traditional',
'English' => 'english',
),
/**
* 指示默认语言
*/
'defaultLanguage' => 'simplified',
2.建立Controller_Base类:所有controller层类文件的父类。
function Controller_Base() {
//URL中是否带有语言参数
$lang = (isset($_GET['language']) && trim($_GET['language']) != '') ? trim($_GET['language']) : '';
//如果URL中没有带语言参数,则从cookie中判断是否有之前保存的语言选择记录
if ($lang == '') {
$lang = isset($_COOKIE['language'])? $_COOKIE['language'] : '';
}
//获取系统默认的语言参数
$localLang = $this->getLocalLang();
$lang = ($lang == '') ? $localLang : $lang;
//将语言写进cookie里
setcookie("language", $lang, time() + 2592000);
//获取配置中所有的语言
$languages = FLEA::getAppInf('languages');
//判断获取的语言是否在配置的语言数组中,并调用语言参数设置函数
if (in_array($lang, $languages, true)) {
FLEA::setAppInf('defaultLanguage', $lang);
}
//加载语言文件
load_language('ui');
}
//获取本地操作系统语言
function getLocalLang() {
$localLang = $_SERVER["HTTP_ACCEPT_LANGUAGE"]; // system language
if (preg_match ("/^(zh-cn)|(zh-sg)/i", $localLang)) {
$lang = 'simplified';
}
if (preg_match ("/^(zh-tw)|(zh-mo)|(zh-hk)|(zh-sg)/i", $localLang)) {
$lang = 'traditional';
}
if (preg_match ("/^(en)|(en-ie)|(en-au)|(en-ca)|(en-us)|(en-nz)|(en-qb)/i", $localLang)){
$lang = "english"; // en
}
return $lang;
}
--------------------------------------------------------------------------------------------
参考:http://www.dayanmei.com/blog.php/ID_1234.htm
FLEAPHP访问权限问题
1. 配置文件APP_INF.php中指定ACT文件
/**
* 指定要使用的调度器
*/
'dispatcher' => 'FLEA_Dispatcher_Auth',
/**
* 使用默认的控制器 ACT 文件
*
* 这样可以避免为每一个控制器都编写 ACT 文件
*/
'defaultControllerACTFile' => dirname(__FILE__) . DS . 'DefaultACT.php',
2.登录模块:Login文件
class Controller_Login extends FLEA_Controller_Action
{
function actionLogin() {
//验证用户名密码成功后
$rbac =& FLEA::getSingleton('FLEA_Rbac');
$data['username'] = $user['username'];
$data['id'] = $user['id'];
$rbac->setUser($data, $user['roleid']);
$user = $rbac->getUser();
$_SESSION['user'] = $user;
//print_r($_SESSION);
/*
Array (
[user] => Array (
[last_signin_time] => 2010-05-31 15:24:51
[id] => 1
[username] => admin
[RBAC_ROLES] => 1 /*这个就是以后用到ACT文件中的值,数据库里对应的roles表 1 =>super administrator*/
[session_life_time] => 6000 )
)
*/
}
}
3. DefaultACT.php
return array(
/**
* Login 控制器
*/
'Login' => array('allow' => RBAC_NULL,
'actions' => array(
'Index' => array('allow' => RBAC_EVERYONE),
'Logout' => array('allow' => '1,2'),
'Login' => array('allow' => RBAC_EVERYONE)
)
),
/**
* Index 控制器
*/
'Index' => array('allow' => RBAC_NULL,
'actions' => array(
'Index' => array('allow' => RBAC_EVERYONE),
'About' => array('allow' => RBAC_EVERYONE),
'Sitemap' => array('allow' => RBAC_EVERYONE),
'Adminindex' => array('allow' => '1,2'),
)
),