0

私は次のコードを持っています:

<?php
ini_set('display_errors', 'On');error_reporting(E_ALL | E_STRICT);
session_start();
set_include_path('../include');
if(isset($_GET["lang"])
    && $_GET["lang"] != $_SESSION["lang"]
    && ($_GET["lang"] == 'en' || $_GET["lang"] =='pt')){
$_SESSION["lang"]= $_GET["lang"];
setcookie("lang", $_GET["lang"]);
}
if(!isset($_SESSION["lang"])){
    if(isset($_COOKIE["lang"])){
    echo $_SESSION["lang"] == $_COOKIE["lang"];
    } else {
        switch(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2)){
        case 'pt': $_SESSION["lang"] = "pt";setcookie("lang", $_SESSION["lang"]); break;
        default: $_SESSION["lang"] = "en";setcookie("lang", $_SESSION["lang"]);
        }

    }
}
print_r($_SESSION);print_r($_GET);print_r($_COOKIE);
require('lang/'.$_SESSION["lang"].'.php');
?>

しかし、何らかの理由で$_SESSION変数は値を保持しません。出力は次のとおりです。

注意:未定義のインデックス:13行目の/home/claudio/public_html/index.phpのlang Array()Array([get] => get)Array([lang] => en [PHPSESSID] => c92d58e58508gvjf2urfmr9uh3)注意:未定義インデックス:23行目の/home/claudio/public_html/index.phpのlang

警告:require(lang / .php):ストリームを開くことができませんでした:23行目の/home/claudio/public_html/index.phpにそのようなファイルまたはディレクトリはありません

致命的なエラー:require():23行目の/home/claudio/public_html/index.phpでrequired'lang / .php'(include_path ='../ include')を開くことができませんでした

echo session_start();1を返すと、セッションの問題は何になりますか?

4

1 に答える 1

1

if $_GET["lang"] and $_SESSION["lang"] are not set and $_COOKIE["lang"] is set, the only thing executed would be:

echo $_SESSION["lang"] == $_COOKIE["lang"]; //maybe this should be a '='?

If this is not the case, maybe you should check if the session save path in /var/php_sessions is writable by the web server.

于 2012-11-13T10:45:19.937 に答える