关于在不更改当前页面的情况下更改页面语言的帮助(PHP)

关于在不更改当前页面的情况下更改页面语言的帮助(PHP),php,session,header,redirect,Php,Session,Header,Redirect,语言网页。我设置了3个链接,法语。。。href=changeLanguage.php?lang=fr、es、en changLanguage.php session_start(); if(isset($_SESSION['bckTo']) && isset($_GET['lang'])){ $lang = preg_replace('/[^a-z]/','',trim($_GET['lang'])); #TODO #More vlidation .

语言网页。我设置了3个链接,法语。。。href=changeLanguage.php?lang=fr、es、en

changLanguage.php

session_start();

if(isset($_SESSION['bckTo']) && isset($_GET['lang'])){

    $lang = preg_replace('/[^a-z]/','',trim($_GET['lang']));

    #TODO
    #More vlidation ...

    $full_url = $_SESSION['bckTo']; 
    $full_url = str_replace(array('&lang=en','&lang=es','&lang=fr'),'',$full_url);

header('Location: '.$full_url.'&lang='.$lang.'');
}
$\会话['bckTo']保存当前URL,例如:mysite.com/index.php?id=x&n\u d=y 问题是,标题将URL转换为:mysite.com/index.php?id=x&;n_d=y&lang=en


任何想法都将受到欢迎

为什么不在会话中设置语言而不是通过GET?然后,您只需放置一个链接来更改语言,然后重定向到页面。这可能是最好的,因为您已经在使用会话

例如:

关于语言:

//code up here
if (isset($_SESSION['bckTo') && isset($_GET['lang'])) {
     // $lang code here
     $_SESSION['lang'] = $lang;
     header('Location: ' . $_SESSION['bckTo']);
}

然后,您只需要更改语言检查/显示代码来检查会话变量,而不是实际页面上的GET。

运行html_entity_decode将这些html实体转换回符号


谢谢你的回答。谢谢你的回答,在这里我如何继续,我定义语言变量定义'INDEX_TITLE','Welcome…',我有一个脚本,它检查get变量并包含正确的翻译文件。嗯,lang.en.php…需要注意的是,页面的每个语言版本都将存在于同一URL下。在同一个URL下提供不同的内容对SEO是不利的,因为要么备用语言版本从未被索引,要么取决于哪个版本被索引。如果URL是可公开访问的资源,则URL应包含该语言。对于像会员页面这样的东西,这没什么大不了的。谢谢,伙计,这是一个很好的观点,但是如果我们关心SEO,我们需要一个多语言网站,我们能做些什么吗?@jartaud是的,给每个网站自己的URL:/en/page,/fr/page,/page?lang=en,/page?lang=fr,example.com/page,示例.fr/page…你喜欢什么都行。@deceze我不明白,因为页面是动态创建的。