php设置cookies立即生效,实现网页多语言切换

本文阅读 4 分钟
广告

这是最近的项目需要用到的功能,大概就是些边边角角的东西,我主要想实现的还是多语言切换这种,其实思路很足就是php基础不是太好。不过既然有了大概的逻辑在,那么其实也就没什么大不了的地方了,很多东西可以百度查询到,对于语言切换这个,原本我就有js的实现方法,不过那个太笨,而且对seo并不好,治标不治本。用php直接加载在页面上才可以被搜索引擎很好的识别,并且可以在头部申明网站的语言,比如en或者cn等。

另外,以下代码在typecho程序里面完美可用

第一步:创建文件lang.php

1.首先是默认语言的定义和cookies的存储,还包括页面传入值的处理。

function cookie($var, $value = '', $time = 0, $path = '', $domain = '', $s = false)
{
    $_COOKIE[$var] = $value;
    if (is_array($value)) {
        foreach ($value as $k => $v) {
            setcookie($var .'['.$k.']', $v, $time, $path, $domain, $s);
        }
    } else {
            setcookie($var,$value, $time, $path, $domain, $s);
    }
}

$cookietime= time()+3600;
$lang = "cn";
if(isset($_COOKIE["lang"])){
    if(isset($_GET['lang'])){
        if(preg_match("/^[a-zA-Z\s]+$/",$_GET['lang'])){
            $lang = $_GET['lang'];
        }else{
            $lang = "cn";
        }
        cookie("lang", $lang, $cookietime,'/');
        $lang = $_COOKIE["lang"];
    }else{
        $lang = $_COOKIE["lang"];
    }
}else{
    if(isset($_GET['lang'])){
        if(preg_match("/^[a-zA-Z\s]+$/",$_GET['lang'])){
            $lang = $_GET['lang'];
        }else{
            $lang = "cn";
        }
        cookie("lang", $lang, $cookietime,'/');
        $lang = $_COOKIE["lang"];
    }
}

上面就分为了三个部分,定义方法cookies,在里面将php默认的cookies存入方法进行处理,然后让其立即生效(php单纯使用setcookie是不会生效的,会报错误)。然后就是定义默认的语言字段cn,也就是中文,并且设置一个语言id,也就是langid,因为后面语言是以数组形式。最后就是对页面上传来的字段lang进行识别处理,最后存入cookies,另外还带了cookies生效持续时间的定义。

2.然后就是语言的定义,我采用的数组形式,大概就是如下形式加在lang.php里面。

$lang_sort=array("首页","Home");
$lang_sort5=array("关于我们","About");

调用方式就简单了。

echo $lang_sort[0]    //输入中文
echo $lang_sort[1]    //输入英文

这样写在我看来很有扩展性,因为要更多语言的话,就直接在后面继续加就好了,这里也就看得出来langid这个字段的作用,那就是用来在数组中定位了,0是中文,1是英文,其实网站也有定义xml的办法,那个我觉得太麻烦还是算了。

第二步:在页面上引入功能,实现切换的整个过程。

1.先引入lang.php文件,将语言包在页面上生效,注意必须也只能是php文件来引入。

include 'lang.php';

2.在前台来两个语言切换的入口,无论是a标签还是写个表单都可以,我这里用a标签。

<a href="?lang=en">英文</a>
<a href="?lang=cn">英文</a>

3.然后就是对可以用来多语言切换的文字进行替换了,我的是在模板html文件,写了如下的代码。

<?php echo $lang_sort[$langid]?>

这句代码替换了“首页”这个文字,在进行语言切换的时候,他会立即根据lang的值改变。

4.另外为了浏览器和搜索引擎对网页语言的识别,我还将头部的<html>改为了如下:

<html lang="<?php echo $lang;?>">

以上就是实现php多语言切换的全部流程,在制作企业官网等的展示型页面的情况下,真的很实用。
timg.jpg
规则之树版权所有,转载请注明来源,标明作者及原文链接

本文来自投稿,不代表本站立场,如若转载,请注明出处:https://www.ruletree.club/archives/1218/
杰奇cms,两个笔趣阁后台采集规则
« 上一篇 05-17
杰奇2.4版本,完美兼容关关采集器教程
下一篇 » 05-24
广告

发表评论

成为第一个评论的人

作者信息

热门文章

标签TAG

热评文章