User Language Class 获取/设置用户訪问的页面语言,假设用户没有设置訪问语言。则读取Accept-Language。

依据用户选择的语言显示相应的页面(英文。中文简体,繁体中文)

UserLang.class.php

  1. <?
  2.  
  3. php
  4. /** User Language Class 获取/设置用户訪问的页面语言,假设用户没有设置訪问语言。则读取Accept-Language
  5. * Date: 2014-05-26
  6. * Author: fdipzone
  7. * Ver: 1.0
  8. *
  9. * Func:
  10. * public get 获取用户訪问语言
  11. * public set 设置用户訪问语言
  12. * private getAcceptLanguage 获取HTTP_ACCEPT_LANGUAGE
  13. */
  14.  
  15. class UserLang{ // class start
  16.  
  17. private $name = 'userlang'; // cookie name
  18. private $expire = 2592000; // cookie expire 30 days
  19.  
  20. /** 初始化
  21. * @param String $name cookie name
  22. * @param int $expire cookie expire
  23. */
  24. public function __construct($name='', $expire=null){
  25.  
  26. // 设置cookie name
  27. if($name!=''){
  28. $this->name = $name;
  29. }
  30.  
  31. // 设置cookie expire
  32. if(is_numeric($expire) && $expire>0){
  33. $this->expire = intval($expire);
  34. }
  35.  
  36. }
  37.  
  38. /** 获取用户訪问语言 */
  39. public function get(){
  40.  
  41. // 推断用户是否有设置过语言
  42. if(isset($_COOKIE[$this->name])){
  43. $lang = $_COOKIE[$this->name];
  44. }else{
  45. $lang = $this->getAcceptLanguage();
  46. }
  47.  
  48. return $lang;
  49.  
  50. }
  51.  
  52. /** 设置用户訪问语言
  53. * @param String $lang 用户訪问语言
  54. */
  55. public function set($lang=''){
  56.  
  57. $lang = strtolower($lang);
  58.  
  59. // 仅仅能是英文。中文简体,繁体中文
  60. if(in_array($lang, array('en','sc','tc'))){
  61. setcookie($this->name, $lang, time()+$this->expire);
  62. }
  63.  
  64. }
  65.  
  66. /** 获取HTTP_ACCEPT_LANGUAGE */
  67. private function getAcceptLanguage(){
  68.  
  69. $lang = strtolower($_SERVER['HTTP_ACCEPT_LANGUAGE']);
  70.  
  71. if(in_array(substr($lang,0,5), array('zh-tw','zh_hk'))){
  72. $lang = 'tc';
  73. }elseif(in_array(substr($lang,0,5), array('zh-cn','zh-sg'))){
  74. $lang = 'sc';
  75. }else{
  76. $lang = 'en';
  77. }
  78.  
  79. return $lang;
  80.  
  81. }
  82.  
  83. } // class end
  84.  
  85. ?
  86.  
  87. >

demo

  1. <?php
  2.  
  3. require "UserLang.class.php";
  4.  
  5. $obj = new UserLang('sitelang', 3600);
  6. echo $obj->get().'<br>';
  7.  
  8. ?>

php 获取/设置用户訪问页面语言类的更多相关文章

  1. 《Java虚拟机原理图解》1.3、class文件里的訪问标志、类索引、父类索引、接口索引集合

    讲完了class文件里的常量池,我们就相当于克服了class文件里最麻烦的模块了.如今,我们来看一下class文件里紧接着常量池后面的几个东西:訪问标志.类索引.父类索引.接口索引集合. 1. 訪问标 ...

  2. MFC 一个类訪问还有一个类成员对象的成员变量值

    作者:卿笃军 原文地址:http://blog.csdn.net/qingdujun/article/details/35263857 MFC中一个类要訪问另外一个类的的对象的成员变量值,这就须要获得 ...

  3. 微信訪问页面,莫名其妙刷新两次,火狐、谷歌、ie无问题

    做微信刮刮卡活动,有个用户刮奖次数的限制,昨天一切正常,所以就修改了一些东西,今天再打开的时候刮奖次数第一次是1,第二次是3,第三次是5.感觉就是页面刷新了两遍. 检查前后台代码.发现一些bug就顺手 ...

  4. crm使用soap取消用户訪问记录权限

    //取消訪问权限 function demo() {     //操作记录的id     var targetId = "A8A46444-BA10-E411-8A04-00155D002F ...

  5. mysql设置远程訪问数据库的多种方法

    问题:MySQL权限设置正确,但仍无法远程訪问.通过telnet发现3306port未打开. 分析:MySQL默认仅仅绑定127.0.0.1,即:仅仅有在本机才干訪问3306port. 解决:找到My ...

  6. oracle跨数据库跨用户訪问注意事项

    java代码中不同意出现oracle的username.数据链路名. 跨用户.跨数据库的訪问必须在oracle中建同义词或视图来实现.在java代码中仅仅需当做当前用户下的对象处理.

  7. ORACLE11G设置IP訪问限制

    出于数据安全考虑,对oracle数据库的IP做一些限制,仅仅有固定的IP才干訪问. 改动$JAVA_HOME/NETWORK/ADMIN/sqlnet.ora文件 添加下面内容(红色表示凝视): #开 ...

  8. Nginx 訪问日志增长暴增出现尖刀的具体分析

    前言:          Nginx日志里面Mobileweb_access.log增长特别大.一天上百兆.将近100W的訪问记录.依照我们眼下的规模,热点用户才500个左右.就算人人用手机app訪问 ...

  9. 利用JS跨域做一个简单的页面訪问统计系统

    事实上在大部分互联网web产品中,我们一般会用百度统计或者谷歌统计分析系统,通过在程序中引入特定的JS脚本,然后便能够在这些统计系统中看到自己站点页面详细的訪问情况.可是有些时候,因为一些特殊情况,我 ...

随机推荐

  1. Linux和Windows双系统安装要点

    这里主要说下CentOS和Windows7的双系统安装遇到的一些问题 一.磁盘分区 这个不得不说下在Windows下坑爹的设定了,如果是用默认的磁盘划分,系统会自己先划出一个100M左右的区,关键还是 ...

  2. Markdown 表情包

  3. SQL注入工具实践

    程序简介 超级SQL注入工具(SSQLInjection)是一款基于HTTP协议自组包的SQL注入工具,支持出现在HTTP协议任意位置的SQL注入,支持各种类型的SQL注入,支持HTTPS模式注入. ...

  4. Java工具类-设置字符编码

    package common; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.Filter ...

  5. python 简单日志框架 自定义logger

    转载请注明: 仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/ 通常我们在构建 python 系统时,往往需要一个简单的 logging 框架.python 自 ...

  6. Vue 2.0 Application Sample

    ===搭建Demo=== http://blog.csdn.net/wangjiaohome/article/details/51728217 ===单页Application=== http://b ...

  7. Loj#6434「PKUSC2018」主斗地(搜索)

    题面 Loj 题解 细节比较多的搜索题. 首先现将牌型暴力枚举出来,大概是\(3^{16}\)吧. 然后再看能打什么,简化后无非就三种决策:单牌,\(3+x\)和\(4+x\). 枚举网友打了几张\( ...

  8. JZYZOJ 1542 [haoi2015]str 矩阵乘法 dp

    http://172.20.6.3/Problem_Show.asp?id=1542 dp+矩阵乘法思路hin好想,对于我这种题目稍微学术就几乎什么也不会的人来说唯一的难点在于读题,因为一心想着划水题 ...

  9. 【线性筛】【质因数分解】【约数个数定理】hdu6069 Counting Divisors

    d(x)表示x的约数个数,让你求(l,r<=10^12,r-l<=10^6,k<=10^7) #include<cstdio> using namespace std; ...

  10. 【区间dp】【记忆化搜索】UVALive - 3516 - Exploring Pyramids

    f(i,j)=sum(f(i+1,k-1)*f(k,j) | i+2<=k<=j,Si=Sk=Sj). f(i+1,k-1)是划分出第一颗子树,f(k,j)是划分出剩下的子树. #incl ...