我不想要?lan = AL代码在我的网址php?

时间:2014-02-21 13:58:57

标签: php

我想在不显示网址的情况下更改语言: http://myweb.com/?lan=AL 要么 http://myweb.com/about-us?lan=AL

如何在后台完成,而不是在url中显示。 这是下面的代码。

require('_inc_lang/lan_en.php');
require('_inc_lang/lan_al.php');
require('_inc_lang/lan_de.php');

if(!isset($_SESSION['lan'])){
session_start();
}

    if(isset($_GET['lan'])){
    $_SESSION['lan'] = $_GET['lan'];
    }

    $lan = isset($_SESSION['lan']) ? $_SESSION['lan'] : 'al';
    switch ($lan) {
    case 'al':
    $TEXT = $TEXT_AL;
    break;
    case 'de':
    $TEXT = $TEXT_DE;
    break;
    case 'en':
    $TEXT = $TEXT_EN;
    break;
}

3 个答案:

答案 0 :(得分:2)

您可以根据浏览器语言

进行操作
<?php
$lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
switch ($lang){
    case "de":
        $TEXT = $TEXT_DE;
        break;
    case "en":
        $TEXT = $TEXT_EN;
        break;
    case "al":
        $TEXT = $TEXT_AL;
        break;        
    default:
        $TEXT = $TEXT_EN;
}
?>

答案 1 :(得分:1)

从GET更改为POST。

<form method="post">
    ..button/select/whatever have you
</form>

if(isset($_POST) && /* sanitise */)
    $_SESSION['lan'] = $_POST['lan'];

代码需要整理,但你可以自己做:)这是你在寻找什么?

编辑: 绝对完全必须使用链接,否则你会爆炸?以下SO页面将神奇地向您展示如何!

Use a normal link to submit a form

How to submit a form with JavaScript by clicking a link?

答案 2 :(得分:1)

您已经将语言选择复制到会话中,因此如果在网址中找到它,则只需位置:到没有网址的版本:

if(isset($_GET['lan'])){
    $_SESSION['lan'] = $_GET['lan'];
    header("Location: ".$_SERVER['SCRIPT_URI']);
}

编辑:请注意我添加了变量$_SERVER['SCRIPT_URI']而不是硬编码位置;现在它无论在何处被调用都会工作(SCRIPT_URI将为您提供没有查询字符串的服务器/页面)