2016-12-26 8 views
1

アラビア語と英語が1つのプロジェクトに取り組んでいます
2つのリンクをフッターに追加しました
これらの2つの言語では、ユーザがいずれかをクリックするとARとEN
として値を送信し、次にこれらの値を持つクッキーを作成し、 ar.php/en.phpというページを翻訳されたテキストは、選びだし言語に依存同じランでクッキーを更新、削除、作成することはできません

/////////////// PROBLEM /////////////////

最初の試行でクッキーを作成または更新したり削除したりしません
クッキーを設定するとクッキーが処理されますが、それ以降は投与されません クッキーが表示されません
実行を終了してページを開いてから私はもう一度コードを実行するために再試行し、クッキーはそこにあります 私はnetbeansとVisual Studioで同じプロジェクトを試みましたが、私はそれがコンパイラの問題かもしれないと思ったのと同じ結果でした。

<?php 

if(isset($_GET['lang'])) 
{ 
    /* one cookie with the same name but the value will change depend on user choice if he changed the language 
     and by the value i will call the ar.php or en.php with the array with all the text content of the page */ 
    $langu=$_GET['lang']; 
    switch($langu) 
    { 
     case "en": 
     setcookie("page_lang", "en", time() +3600,"/"); // set a cookie for english language 
     break; 
     case "ar": 
      setcookie("page_lang", "ar", time()+3600,"/"); // set a cookie for arabic language 
      break; 
     default: 
      setcookie("page_lang", "ar", time() -100,"/"); 
      break; 
    } 

} 
//$langu=""; 
include("css/header.html"); 

    if(isset($_COOKIE['page_lang'])) 
    {// choosen language 
     $cookie_language =$_COOKIE['page_lang']; 

     include("lang/{$cookie_language}.php"); 
    }else 
    { //default language 
     include("lang/ar.php"); 
    } 


?> 
+0

こんにちは。ようこそ。 – yivi

答えて

1

クッキー(および$_COOKIEアレイ)は、ブラウザベースです。したがって、setcookieを実行した場合、リクエストが完了してもブラウザが表示されなくなり、ブラウザがリクエストを送信して読むことができるようになります。

ただ、またはGETパラメータをチェックし、それは次のようになり:

if(isset($_COOKIE['page_lang']) || isset($_GET['lang')) 

$_GETを読んだとき、あなたが以前に設定されている変数を確認してください。

$langu = null; 
if(isset($_GET['lang'])) { 
    $langu = $_GET['lang']; 
    switch($_GET['lang'])) { 
    case "en": 
     // set a cookie for english language 
     setcookie("page_lang", "en", time() +3600,"/"); 

     break; 
    case "ar": 
     // set a cookie for arabic language 
     setcookie("page_lang", "ar", time()+3600,"/"); 
     break; 
    default: 
     setcookie("page_lang", "ar", time() -100,"/"); 
     $langu = 'ar'; 
     break; 
    } 
} 
elseif (isset($_COOKIE['page_lang'])) { 
    $langu = $_COOKIE['page_lang']; 
} 

if (!is_null($langu) { 
    include("lang/{$langu}.php"); 
} 
else { 
    include("lang/ar.php"); 
} 

この方法では、GETは(あなたが言語を変更することができます)クッキーよりも優先され、あなたが言語を選択し、同じ手順でクッキーを設定します。

So:ユーザーが言語を変更するために言語ボタンをクリックした場合、新しいCookieが設定され、THAT言語が表示されます。パラメータで無効な言語が選択された場合は、デフォルトの言語に戻ります。

パラメータが存在せず、以前にクッキーが設定されていた場合は、クッキーで選択した言語を表示します。また、パラメータもクッキーも設定されていない場合は、デフォルトの言語を表示するだけです。

+0

なぜ機能しないのですか?あなたは私のコードが完全ではないことを理解していますよね? – yivi

+0

これは私のために働くようには思われませんが、私は問題を理解しています
と私は1つのことを追加したい、そしてそのgetはユーザが言語を選択したときにのみ使用可能です。クッキーの値はほとんど変わらないので、ほとんどの場合、$ _GET ['lang']は空になります。 –

+0

あなたは完全な作業コードを持っています。私はあなたの問題を理解しました。これで修正されます。ユーザーが言語を選択すると、GETパラメーターが使用され、ユーザーが以前に言語を選択した場合、Cookieオプションが使用されます。 – yivi

関連する問題