0

我试图让一个简单的语言初始化工作,下面是条款。是否错过了用户没有默认语言集或选定语言集的任何可能情况?!

  • 如果lang已发布,则将其分配给 $_SESSION
  • 如果lang未发布,请查看 $_SESSION 是否不存在并分配默认值
  • 否则什么都不做,因为 $_SESSION 已经设置了选定的语言并填充了。

    if(isset($_POST['lang'])) {
      $_SESSION['lang'] = $_POST['lang'];
    } else {
      if(!isset($_SESSION['lang'])) {
        $_SESSION['lang'] = 'en_uk';
      }
    }
    
4

2 回答 2

1

It looks fine if you want the lang in the session. A cookie would be better though.

You also might want to have some kind of validation on the POSTed value before you save it to the session or go look for the strings in the database or files.

if(!preg_match('/^[a-z]{2}_[a-z]{2}$/', $_POST['lang']))
    die('Wrong lang parameter format');
于 2013-09-10T11:53:19.407 回答
0

将语言放入会话中可能会产生奇怪的意外效果。

会话是.. 好.. 会话范围。如果我打开您网站的两个窗口,并且我更改了一个窗口的语言,那么当我加载另一个页面时,另一个窗口的语言也会切换。

将语言放在 URL 中,例如:

  • my.domain.com/en_uk/jobs _ _
  • my.domain.com/ en_us /jobs

当“下一页”不是页面时,这种效果变得更加奇怪,例如,我正在提交的表单。

于 2013-09-10T11:49:27.203 回答