こんにちは、言語設定にセッションを使用したいと思います。
だから私は http_language_accept から優先言語を取得します:
if (isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])){
$max = 0.0;
$languages = explode(",", (strtolower($_SERVER["HTTP_ACCEPT_LANGUAGE"])));
foreach($languages as $language){
$language = explode(';', $language);
$q = (isset($language[1])) ? ((float) $language[1]) : 1.0;
if ($q > $max){
$max = $q;
$pref_language = $language[0];
}
}
$pref_language = trim($pref_language);
}
今、前回の訪問から保存された設定が既に保存されているかどうかを確認したいと思います:
if (isset($_SESSION['pref_lang'])){
$_SESSION['pref_lang'] = $pref_language;
}
これが最初の問題です。ページを呼び出すと、エラー 500 が表示されます。
さらに、$_POST を送信するときに $pref_language を変更したいと思います。
だから私はこのコードを持っています:
$one = $_POST['one'];
if(isset($_SESSION['pref_lang']) AND isset($one) ){
$_SESSION['pref_lang'] = 'one';
$_SESSION['pref_lang'] = $pref_language;
}
セッションの使用中に変数を設定および変更する正しい方法であるかどうか、誰かが教えてくれるとうれしいです。
どうもありがとう。
アップデート:
答えに関しては、ユーザーのオラフ・ダイエットの方法を使用しました。
だから私はそのようにしました:
if (!isset($_SESSION['pref_lang'])){ //if the session does not exist
if (isset($pref_language)){ //but the given $pref_language from above
$_SESSION['pref_lang'] = $pref_language; //the session will be registered with the value of $pref_language
}
}else{
if (isset($_SESSION['pref_lang'])){ //in case of that an existing session from a previous visit
if (isset($pref_language)){ //and the pref_language is set from above
$_SESSION['pref_lang'] = $pref_language; //the session will be given a variable
if (isset($one)){ // this will be the problem now when isset $_post
$pref_language = 'one'; //$pref_language or even session will get a new value
}
if (isset($two)){
$pref_language = 'two';
}
}