Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Codeigniter会话语言-默认语言_Php_Codeigniter - Fatal编程技术网

Php Codeigniter会话语言-默认语言

Php Codeigniter会话语言-默认语言,php,codeigniter,Php,Codeigniter,这是 我使用此脚本在站点上使用2种语言(user_agents.php文件): 在Chrome浏览器中查看网站时,不会显示图像。我的区域设置是en,看起来似乎与区域设置正确匹配,显然没有与区域设置匹配的图像 问题可能与浏览器返回的区域设置有关?如果您使用的是Android设备,您可以在Chrome中启用,以便更好地理解正在发送的区域设置。我认为在配置中设置语言可能会很有用,请尝试以下操作: <?php class MY_Controller extends CI_Controller {

这是

我使用此脚本在站点上使用2种语言(user_agents.php文件):


在Chrome浏览器中查看网站时,不会显示图像。我的区域设置是en,看起来似乎与区域设置正确匹配,显然没有与区域设置匹配的图像


问题可能与浏览器返回的区域设置有关?如果您使用的是Android设备,您可以在Chrome中启用,以便更好地理解正在发送的区域设置。

我认为在配置中设置语言可能会很有用,请尝试以下操作:

<?php
class MY_Controller extends CI_Controller {
    public function __construct(){
        parent::__construct();
        parse_str($_SERVER['QUERY_STRING'], $_GET);

        if(!$this->session->userdata('lang') && !isset($_GET['lang']) && isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
            $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);                
        }else{
            if(isset($_GET['lang'])){
                if($_GET['lang'] == 'es' || $_GET['lang'] == 'ca'){
                    $lang = $_GET['lang'];
                }else{
                    $lang = 'ca';
                }
            }
        }

        $this->session->set_userdata('lang' , $lang);
        $this->config->set_item('language', $lang);
        $this->lang->load('site', $this->session->userdata('lang'));

    }
}

是否自动加载会话库?如果答案是否定的,那么您必须先加载它,然后才能对其进行任何操作

$this->load->library('session');
所以试试看

class MY_Controller extends CI_Controller {
    public function __construct(){
        parent::__construct();

        $this->load->library('session'); // Loading the session library

        parse_str($_SERVER['QUERY_STRING'], $_GET);

        if(!$this->session->userdata('lang') && !isset($_GET['lang']) && isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){
            $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
            $this->session->set_userdata('lang' , $lang);
        }else{
            if(isset($_GET['lang'])){
                if($_GET['lang'] == 'es' || $_GET['lang'] == 'ca'){
                    $this->session->set_userdata('lang' , $_GET['lang']);
                }else{
                    $this->session->set_userdata('lang' , 'ca');
                }
            }
        }
        $this->lang->load('site', $this->session->userdata('lang'));

    }
}

您的会话库工作正常吗?您可以通过设置会话值然后打印来进行检查。我已经检查了你的网站。如果提供了
lang
GET变量,它将按预期工作,因为主页上的图像具有正确的
前缀(en、es、ca),但如果未提供该变量,则假定默认的
en
前缀。我建议您打开错误报告或查看错误日志

我建议您执行以下操作以启用并检查会话是否正常工作

转到
/application/config/autoload.php
,找到以和开头的行
$autoload['libraries']
,查看会话是否自动加载。看起来是这样的

$autoload['libraries'] = array('database','session');
然后在核心控制器(MY_controller)中检查以下各项:

$this->session->set_userdata('test','Hello World');
echo $this->session->userdata('test'); exit();
如果打印了
Hello World
,则可以说会话正在工作。请让我知道你对此的回应。 [与客户端聊天后更新]


解决方案:本机会话库似乎无法正常工作。页面刷新时会话丢失。因此,我从中添加了
本机PHP会话
库,问题就解决了

无法加载请求的语言文件:language/ja/site_lang.php/lanjuage/ja?你在哪里看到的?我没有加载任何“ja”语言:我复制并粘贴了你网站上的错误。错误仍然存在。看起来您可能在某个地方输入了错误。我认为默认情况下,它是从浏览器的公认语言加载语言的,对我来说,它试图加载
language/fr/site_lang.php
,因为我的浏览器设置为fr-CA。@codek,我认为您应该首先查看该语言是否已输入
HTTP\u ACCEPT\u LANGUAGE
由你的应用程序管理,因为它可能会像我和Kenzo一样失败。我将其更改为此,但我看不到任何区别,仍然存在相同的问题。谢谢@codek会话库是否在您的自动加载中自动加载?(我认为是的,否则它会崩溃)。您能否发布位于
application/config/config.php
中的会话的配置?它应该以
$config['sess\u cookie\u name']='ci\u session'开头或类似的东西this@codek另一点,您的MY_控制器是否由您的控制器正确加载(继承)?您的
config.php
是否包含
$config['subclass_prefix']='MY_'?使用config.php会话更新了问题。My
config.php
确实包含以下内容:
$config['subclass_prefix']='My_'更改了它。我看不出有什么不同。。。无论如何谢谢你!在
autoload.php
中,我有:
$autoload['libraries']=array('session')。我通过粘贴您的代码进行检查,并将其打印成
Hello World
,因此会话正在工作…是的,我将代码放在了在线版本中。请,你能删除链接,因为它会进入谷歌。。。谢谢啊,对不起,我刚刚试过,看看它是否有效并被移除。我刚刚又加了一次。重新加载siteK。我看到了。请您在不退出的情况下回显
$this->session->userdata('lang')
,但它不会回显任何内容。尝试回显“Heloo”$这个->会话->用户数据('lang')
,这样我就可以从源代码中识别它了
$autoload['libraries'] = array('database','session');
$this->session->set_userdata('test','Hello World');
echo $this->session->userdata('test'); exit();