php实现获取及设置用户访问页面语言类

本文实例讲述了php实现获取及设置用户访问页面语言类,分享给大家供大家参考。具体分析如下:

该实例User Language Class 获取/设置用户访问的页面语言,如果用户没有设置访问语言,则读取Accept-Language。根据用户选择的语言显示对应的页面(英文,简体中文,繁体中文)

UserLang.class.php类文件如下:

<?php
/** User Language Class 获取/设置用户访问的页面语言,如果用户没有设置访问语言,则读取Accept-Language
*  Date:  2014-05-26
*  Author: fdipzone
*  Ver:  1.0
*
*  Func:
*  public get        获取用户访问语言
*  public set        设置用户访问语言
*  private getAcceptLanguage 获取HTTP_ACCEPT_LANGUAGE
*/ 

class UserLang{ // class start 

  private $name = 'userlang'; // cookie name
  private $expire = 2592000; // cookie expire 30 days 

  /** 初始化
  * @param String $name  cookie name
  * @param int  $expire cookie expire
  */
  public function __construct($name='', $expire=null){ 

    // 设置cookie name
    if($name!=''){
      $this->name = $name;
    } 

    // 设置cookie expire
    if(is_numeric($expire) && $expire>0){
      $this->expire = intval($expire);
    }
  } 

  /** 获取用户访问语言 */
  public function get(){ 

    // 判断用户是否有设置过语言
    if(isset($_COOKIE[$this->name])){
      $lang = $_COOKIE[$this->name];
    }else{
      $lang = $this->getAcceptLanguage();
    }
    return $lang;
  } 

  /** 设置用户访问语言
  * @param String $lang 用户访问语言
  */
  public function set($lang=''){ 

    $lang = strtolower($lang); 

    // 只能是英文,简体中文,繁体中文
    if(in_array($lang, array('en','sc','tc'))){
      setcookie($this->name, $lang, time()+$this->expire);
    }
  } 

  /** 获取HTTP_ACCEPT_LANGUAGE */
  private function getAcceptLanguage(){ 

    $lang = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']); 

    if(in_array(substr($lang,0,5), array('zh-tw','zh_hk'))){
      $lang = 'tc';
    }elseif(in_array(substr($lang,0,5), array('zh-cn','zh-sg'))){
      $lang = 'sc';
    }else{
      $lang = 'en';
    } 

    return $lang;
  }
} // class end
?> 

demo示例程序如下:

<?php 

require "UserLang.class.php"; 

$obj = new UserLang('sitelang', 3600);
echo $obj->get().'<br>';
?>

希望本文所述对大家PHP程序设计的学习有所帮助。

(0)

相关推荐

  • ThinkPHP多语言支持与多模板支持概述

    本文以实例形式简述了ThinkPHP的多语言支持与多模板支持.是ThinkPHP中非常重要的技巧,分享给大家供大家参考.具体如下: 一.ThinkPHP多语言支持: config.php配置文件中添加: //多语言支持设置 'LANG_SWITCH_ON'=>true, 'DEFAULT_LANG'=>'zh-cn', 'LANG_AUTO_DETECT'=>true, 'LANG_LIST'=>'en-us,zh-cn,zh-tw', Home/Lang/文件夹下建立三个文件夹,

  • php根据用户语言跳转相应网页

    当来访者浏览器语言是中文就进入中文版面,国外的用户默认浏览器不是中文的就跳转英文页面. <?php $lan = substr( $HTTP_ACCEPT_LANGUAGE,0,5); if ($lan == "zh-cn") print("<meta http-equiv='refresh' content = '0;URL = gb/index.htm'>"); else print("<meta http-equiv='ref

  • Thinkphp搭建包括JS多语言的多语言项目实现方法

    本文实例讲述了Thinkphp搭建包括JS多语言的多语言项目实现方法.分享给大家供大家参考.具体实现方法如下: 一.问题: 项目需要开发英文版,于是需要搭建多语言项目. 项目使用Thinkphp框架,隐约记得Thinkphp有多语言设置,翻看了帮助手册,果然有,这就边实验边开始: 二.实现方法: Thinkphp采用app_begain来检测和切换语言包,语言包和项目相关,构架等都比较简单,具体的这里:http://www.thinkphp.cn/info/188.html 搭建好了,就可以使用

  • thinkphp实现多语言功能(语言包)

    1.在Home(你取的项目名)的config.php中添加如下配置 复制代码 代码如下: <?phpreturn array(    //'配置项'=>'配置值'        'LANG_SWITCH_ON'     =>     true,    //开启语言包功能                'LANG_AUTO_DETECT'     =>     true, // 自动侦测语言        'DEFAULT_LANG'         =>     'zh-cn

  • PHP检测用户语言的方法

    本文实例讲述了PHP检测用户语言的方法.分享给大家供大家参考.具体如下: function getPreferredLanguage() { $langs = array(); if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { // break up string into pieces (languages and q factors) preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\

  • PHP中使用gettext来支持多语言的方法

    我们今天用一个简单的实例说明一下在PHP中的getText的用法(getText是一系列的工具和库函数,帮助程序员和翻译人员开发多语言软件的), 从而实现PHP的i18n. 现在, 我们假设要显示一个返回主页的link: 复制代码 代码如下: //home.php: $str = 'home'; print <<<HTML <a href="#">{$str}</a> HTML; 下面开启我们多语言的开发之旅: 创建pot文件,pot是Port

  • php简单实现多语言切换的方法

    本文实例讲述了php简单实现多语言切换的方法.分享给大家供大家参考,具体如下: 1.主程序代码: <?php include "lib/function.php"; ?> <script src="js/language.js"></script> <?php if(isset($_GET["language"])){ $_SESSION["language"] = $_GET[&qu

  • php实现获取及设置用户访问页面语言类

    本文实例讲述了php实现获取及设置用户访问页面语言类,分享给大家供大家参考.具体分析如下: 该实例User Language Class 获取/设置用户访问的页面语言,如果用户没有设置访问语言,则读取Accept-Language.根据用户选择的语言显示对应的页面(英文,简体中文,繁体中文) UserLang.class.php类文件如下: <?php /** User Language Class 获取/设置用户访问的页面语言,如果用户没有设置访问语言,则读取Accept-Language *

  • Laravel框架基于中间件实现禁止未登录用户访问页面功能示例

    本文实例讲述了Laravel框架基于中间件实现禁止未登录用户访问页面功能.分享给大家供大家参考,具体如下: 1.生成中间件 [root@localhost MRedis]# php artisan make:middleware CheckLogin Middleware created successfully. 2.实现中间件,在app\http\middleware\CheckLogin.php public function handle($request, Closure $next)

  • MongoDB系列教程(四):设置用户访问权限

    我们知道mysql在安装的时候需要我们设置一个数据库默认的用户名和密码,mongodb也不例外,不过mongodb是默认的没有设置访问限制的,不需要输入用户名和密码都可以访问的,但是这样会十分的不安全,我们需要手动的为mongodb加上权限限制命令.   首先建立一个默认的账户   复制代码 代码如下: Use admin     Db.addUser('sa','sa') 这样我们建立了一个用户名为sa,密码为sa的默认账户.       在此时我们还是可以不输入用户名和密码进入数据库的,接下

  • PHP获取用户访问IP地址的5种方法

    本文实例为大家分享了5种PHP获取用户访问IP地址的方法,供大家参考,具体内容如下 <?php //方法1: $ip = $_SERVER["REMOTE_ADDR"]; echo $ip; //方法2: $user_IP = ($_SERVER["HTTP_VIA"]) ? $_SERVER["HTTP_X_FORWARDED_FOR"] : $_SERVER["REMOTE_ADDR"]; $user_IP = ($

  • Java获取用户访问IP及地理位置的方法详解

    本文实例讲述了Java获取用户访问IP及地理位置的方法.分享给大家供大家参考,具体如下: 获取用户访问的IP地址 /** * 获取用户ip地址 * @return */ public static String getIp(HttpServletRequest request){ String ip = request.getHeader("x-forwarded-for"); if (ip == null || ip.length() == 0 || "unknown&qu

  • SQL Server如何设置用户只能访问特定数据库和访问特定表或视图

    目录 前言 1.设置用户只能查看数据库中特定的视图或表 2.设置用户只能看到特定的数据库 总结 前言 在实际业务场景我们可能需要开放单独用户给第三方使用,并且不想让第三方看到与业务不相关的表或视图,我们需要在数据库中设置一切权限来实现此功能: 1.设置用户只能查看数据库中特定的视图或表 1.创建用户名 选择默认数据库 服务器角色默认为public 用户映射选择指定数据库 打开需要开放权限的数据库,这里我们选择test库 新建查询: 对用户qqq分配 View_1视图 只有 只读select权限

  • django限制匿名用户访问及重定向的方法实例

    前言 大家应该都遇到过,在某些页面中,我们不希望匿名用户能够访问,例如个人页面等,这种页面只允许已经登录的用户去访问,在django中,我们也有比较多的方式去实现. 最简单的,我们在viewz中去判断用户is_authenticated,但这种方法也相对比较笨拙,最理想的的我们当然不希望这个请求能够进入到我们view,在这之前就能够返回一个相关的response,而django其实已经给我们封装好了相关的函数与类.下面话不多说了,来一起看看详细的介绍吧. 基于fbv模式的login_requir

  • Springboot+Shiro记录用户登录信息并获取当前登录用户信息的实现代码

    由于最近做项目需要,在用户登陆后有一个功能是需要用户的信息,进行写入数据库的操作.但是目前还用不到Shiro的高级权限,只为了简单获取用户信息,自己整合了一个只记录用户,获取用户信息的功能. 导入Shiro依赖 <!-- Shiro --> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version

  • AngularJS中实现用户访问的身份认证和表单验证功能

    身份验证 权限的设计中比较常见的就是RBAC基于角色的访问控制,基本思想是,对系统操作的各种权限不是直接授予具体的用户,而是在用户集合与权限集合之间建立一个角色集合.每一种角色对应一组相应的权限.     一旦用户被分配了适当的角色后,该用户就拥有此角色的所有操作权限.这样做的好处是,不必在每次创建用户时都进行分配权限的操作,只要分配用户相应的角色即可,而且角色的权限变更比用户的权限变更要少得多,这样将简化用户的权限管理,减少系统的开销. 在Angular构建的单页面应用中,要实现这样的架构我们

  • win2008 r2中IIS7.5及以上设置404错误页面的正确方法

    1.进入windows 2008服务器,打开IIS Manager,点击需要设置404错误页面的网站.进入windows 2008服务器,打开IIS Manager,点击需要设置404错误页面的网站. 2.在IIS右侧选择错误页这项,双击打开. 3.出现错误页设置页面,今天我们这边只说明一下404如何设置,诸如500.503等这里先不考虑.双击404错误页面那项,或选中404那项点击右侧的编辑按钮 4.出现404错误页面设置选项,笔者选择的是第一个方法,输入404静态页面文件的完整路径,点击下方

随机推荐