Php 初始化语言选择

Php 初始化语言选择,php,session,localization,initialization,Php,Session,Localization,Initialization,我试图让一个简单的语言初始化工作,下面是条款。是否错过了用户既没有默认语言集也没有选定语言集的任何可能情况 如果发布了lang,则将其分配给$\u会话 如果未发布lang,请查看$u会话是否不存在并分配默认值 否则,不执行任何操作,因为$\u会话已使用所选语言设置并已填充 if(isset($_POST['lang'])) { $_SESSION['lang'] = $_POST['lang']; } else { if(!isset($_SESSION['lang'])) {

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

  • 如果发布了
    lang
    ,则将其分配给$\u会话
  • 如果未发布
    lang
    ,请查看$u会话是否不存在并分配默认值
  • 否则,不执行任何操作,因为$\u会话已使用所选语言设置并已填充

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

    • 在会话中使用语言可能会产生奇怪的意外效果

      会议是。。好。。全会期。如果我打开两个窗口访问您的网站,并更改其中一个窗口的语言,则在加载另一个页面时,另一个窗口的语言也将切换

      将语言放在URL中,如:

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

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

      如果您希望在会话中使用lang,那么它看起来很好。不过,一块饼干会更好

      在将发布的值保存到会话或在数据库或文件中查找字符串之前,可能还需要对其进行某种验证

      if(!preg_match('/^[a-z]{2}_[a-z]{2}$/', $_POST['lang']))
          die('Wrong lang parameter format');