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 获取/设置用户訪问页面语言类的更多相关文章

  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. JS作用域和ASP(vbs)作用域比较

    一.js作用域,先上图: 以上代码执行的效果是,依次弹出 undefined, undefined, a, a,为什么是这样的结果啦?因为JS的作用域为链式作用域. 作用域链: 用VAR声明一个变量时 ...

  2. Run Rancher server on windows

    软件环境:WIN 10 一.首先安装Docker for Windows,Cmder(我用这个执行Docker 命令) 二.右键右下角Docker 图标--> Daemon ,在Registry ...

  3. nginx基于tcp负载均衡

    官方参考文档:http://nginx.org/en/docs/stream/ngx_stream_core_module.html 只有nginx1.9以上的版本才支持tcp负载均衡 配置必须出现在 ...

  4. Java流(一)

    流: 概念:Java中对文件的操作是以流的方式进行的.流是Java内存中的一组有序数据序列.Java将数据从源(文件.内存.键盘.网络)读入到内存中,形成了流,然后将这些流还可 以写到另外的目的地(文 ...

  5. J2EE技术架构

    一.简介 J2EE(Java 2 Platform, Enterprise Edition)是一个为大企业主机级的计算类型而设计的Java平台.Sun微系统(与其工业伙伴一起,例如IBM)设计了J2E ...

  6. 机房重构包图(从三层+实体到三层+实体+外观+工厂+接口+SQLHelper)

    刚刚开始接触三层的时候,我只做了两个登录小窗体的例子.画了简单的包图,可以说,为后面机房重构留下了大量的工作(因为三层理解没有深度,也没有理解出自己的东西).不过,欠下的总要还的.在做机房重构的时候, ...

  7. [BZOJ2286][SDOI2011]消耗战(虚树DP)

    2286: [Sdoi2011]消耗战 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 4998  Solved: 1867[Submit][Statu ...

  8. [Codeforces #494] Tutorial

    记录下一开始写错的两道水题 E: 先建出直径,然后在保证直径不变的情况下按照最大度数贪心就好了 注意一下一开始的特判 #include <bits/stdc++.h> using name ...

  9. 【插头dp】CDOJ1690 这是一道比CCCC简单题难的简单题

    最裸的插头dp,可参见大白书. #include<cstdio> #include<cstring> using namespace std; #define MOD 1000 ...

  10. 20162318 实验一《Java开发环境的熟悉》实验报告

    北京电子科技学院(BESTI) 实 验 报 告 课程:程序设计与数据结构 班级:1623班 姓名:张泰毓 成绩:2分 指导老师:娄老师.王老师 实验日期:2017年3月17日 实验密级:非密级 实验器 ...