0

私は単純な言語の初期化を機能させようとしています。以下は節です。ユーザーが既定の言語セットまたは選択された言語セットを持っていない可能性がある状況を見逃していませんか?!

  • POST されている場合langは、$_SESSION に割り当てます
  • POST されていない場合langは、$_SESSION が存在しないかどうかを確認し、デフォルトを割り当てます
  • $_SESSION はすでに選択された言語で設定され、入力されているため、それ以外の場合は何もしません。

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

2 に答える 2

1

セッションでlangが必要な場合は問題ないようです。ただし、クッキーの方が良いでしょう。

セッションに保存したり、データベースやファイルで文字列を探したりする前に、POST された値に対して何らかの検証を行いたい場合もあります。

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

セッションに言葉を入れると、意図しない奇妙な効果が生じる可能性があります。

セッションは..まあ..セッション全体です。あなたのウェブサイトで 2 つのウィンドウを開いて、一方の言語を変更すると、別のページを読み込んだときにもう一方の言語も切り替わります。

次のように、言語を URL に入れます。

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

この効果は、「次のページ」がページではなく、たとえば送信するフォームである場合、さらに奇妙になります。

于 2013-09-10T11:49:27.203 に答える