【问题标题】:Change language on link click点击链接更改语言
【发布时间】:2013-06-08 20:48:08
【问题描述】:

我有一个链接,例如:

<a href="index.php?lang=en"><img src="images/uk.png" style="height:20px"/></a>

包含页面在index.php中:

<?php
session_start();
header('Cache-control: private'); // IE 6 FIX

if(isSet($_GET['lang']))
{
$lang = $_GET['lang'];

// register the session and set the cookie
$_SESSION['lang'] = $lang;

setcookie("lang", $lang, time() + (3600 * 24 * 30));
}
else if(isSet($_SESSION['lang']))
{
$lang = $_SESSION['lang'];
}
else if(isSet($_COOKIE['lang']))
{
$lang = $_COOKIE['lang'];
}
else
{
$lang = 'en';
}

switch ($lang) {
  case 'en':
  $lang_file = 'lang.en.php';
  break;

  case 'gr':
  $lang_file = 'lang.gr.php';
  break;

  default:
  $lang_file = 'lang.en.php';

}

include_once 'languages/'.$lang_file;
?>

它将URL更改为index.php?lang=gr读取参数LANG并根据此参数翻译页面。

如何在不将参数传递给 Url 的情况下更改我的代码?我的意思是,我希望用户停留在同一页面上并在页面刷新时更改语言。

【问题讨论】:

    标签: php html post parameters get


    【解决方案1】:

    应该是这样的;

            <input type="submit" value="" class=<?php if( $_SESSION['lang']  == "tr" ) { echo "submittr";  } else { echo "submiten";} ?>>
    

    在这种情况下,您将更改类的类型

    【讨论】:

      【解决方案2】:

      有几种方法可以做到这一点,其中一种是使用表单并将“提交”按钮设置为您的图像。该表单将使用 POST 方法,该方法不会在 URL 中包含变量。获取请求将添加?lang=en

      <div id="buttons">
          <form method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>">
              <input type="hidden" name="lang" value="en">
              <button type="submit">
                  <img src="images/uk.png" style="height:20px"/>
              </button>
          </form>
      </div>
      

      更改您的代码以使用 $_POST 变量:

      if(isSet($_POST['lang']))
      {
      $lang = $_POST['lang'];
      

      【讨论】:

      • @AndreyPopov 尝试将上面的代码从&lt;form method="post" 更改为&lt;form method="get"。由于您的代码是$_GET,而不是$_POST
      • 是的,我认为它现在可以工作了,谢谢!但是......它仍然为 url 设置了一个参数(这是我点击鼠标时得到的):localhost:8888/index.php?lang=gr
      • @AndreyPopov 不客气。但是,你说的“它仍然给url放一个参数”是什么意思?我不太明白你的意思。你能详细说明吗? GET 将始终显示一个参数。你将不得不mod_rewrite 我认为不要显示一个。类似于 Facebook 的做法,对吗?
      • 抱歉,您需要更新代码才能使用 $_POST -- 我已经更新了答案
      • 是的,直到我在 URL 中有另一个参数之前,这都有效... 例如:我在页面上:localhost:8888/index.php?cat=2 单击按钮会将我重定向到 localhost:8888/index.php 请告诉我如何避免它?谢谢!!!
      猜你喜欢
      • 1970-01-01
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-05
      • 2013-05-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多