1

PHP言語を使用してincludeを使用して、あるファイルから別のファイルに配列を渡す方法は?言語配列(language / langen.php)を含むファイルが1つあります。

global $lang;
$lang['Here'] = 'Here';
$lang['Date'] = "Date";

他のファイルで私は持っています:

include base_url().'language/lang'.$_COOKIE['lang'].'.php';
var_dump($lang);

*(コードを処理することによる私の間違い-trueはvar_dump($ lang))*しかし、それは私にエラーを示します:

A PHP Error was encountered
Severity: Notice
Message: Undefined variable: lang

この問題を解決する方法と私は何を間違えましたか?

4

3 に答える 3

1

まず第一に 、includeステートメントでCookie値を直接使用しないでください。偽のCookieを作成し、アプリケーションを台無しにするのは非常に簡単です。

langという名前のCookieがないか、変数$langが以前に初期化されたことがないと思います。

Cookieが存在し、正しい形式であるかどうかを確認するには、次のようにします。

// set default lang code
$langCode = 'en';

// check if cookie exists and if contains string build from 2 characters from range a-z
// check also if file exists
if (isset($_COOKIE['lang'] && preg_match('/^[a-z]{2}$/', $_COOKIE['lang']) &&
    file_exists(base_url().'language/lang'.$_COOKIE['lang'].'.php')) {
    $langCode = $_COOKIE['lang'];
}
include base_url().'language/lang'.$langCode.'.php';

含まれているファイルで、変数$langが存在するかどうかを確認する必要があります

if (!isset($lang)) $lang = array();
$lang['Here'] = 'Here';
$lang['Date'] = "Date";

globalまた、あなたの例からは同じスコープのように見えるので、ここで使用することは無意味だと思います。

とにかく私にとってはるかにクリーンな解決策は次のようになります:

// first_file.php
$langCode = 'en';
if (isset($_COOKIE['lang'] && preg_match('/^[a-z]{2}$/', $_COOKIE['lang']) &&
    file_exists(base_url().'language/lang'.$_COOKIE['lang'].'.php')) {
    $langCode = $_COOKIE['lang'];
}
$lang = include base_url().'language/lang'.$langCode.'.php';


// langen.php
return array(
    'Date' => 'Date',
    'Here' => 'Here',
);

編集

もう1つ-base_url()がWeb URL(http://example.comなど)を返す場合、それも間違っています(また、この方法で含めるとlangen.phpに少なくとも通知メッセージが含まれるため問題が発生する可能性があります)-有効なファイルパスに含める必要があります

于 2012-11-28T22:56:28.370 に答える
0

そうではないですか?

include base_url().'language/lang'.$_COOKIE['lang']['Here'].'.php';

それ以外の場合は、array()を返すだけです。

于 2012-11-28T22:25:51.037 に答える
0

まず第一に、あなたが投稿したコードにそのようなものがなければ、var-dumping変数$dataのポイントはわかりません。ブラウザに「lang」というCookieがある場合は、問題ないはずです。あなたはいつでもこれをチェックすることができます

var_dump($GLOBALS['lang']);

あなたのコードで。lang*.phpファイルから値の配列を出力する必要があります。

于 2012-11-28T22:43:54.083 に答える