Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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 多语言站点可以在本地主机上工作,但不能在Internet上工作_Php_Html_Web_Multilingual - Fatal编程技术网

Php 多语言站点可以在本地主机上工作,但不能在Internet上工作

Php 多语言站点可以在本地主机上工作,但不能在Internet上工作,php,html,web,multilingual,Php,Html,Web,Multilingual,我创建了一个网站,上面有3个lang,网站在本地主机上运行良好,但当我上传它时,默认lang是EN,每当我在web上更改lang时,比方说从EN更改为FR,页面就会在FR上继续运行,在主页上重定向我,网站上的所有文本都在FR上,这没关系,但在那之后,当我尝试单击时,让我们谈谈我们,然后它自己把它改回默认的语言,并向我展示关于我们的页面,但在默认语言。。。 下面是它的外观代码示例 这是select.php,我在每个页面上包含一次这个文件 <?php session_start(); head

我创建了一个网站,上面有3个lang,网站在本地主机上运行良好,但当我上传它时,默认lang是EN,每当我在web上更改lang时,比方说从EN更改为FR,页面就会在FR上继续运行,在主页上重定向我,网站上的所有文本都在FR上,这没关系,但在那之后,当我尝试单击时,让我们谈谈我们,然后它自己把它改回默认的语言,并向我展示关于我们的页面,但在默认语言。。。 下面是它的外观代码示例

这是select.php,我在每个页面上包含一次这个文件

<?php
session_start();
header('Cache-control: private'); // IE 6 FIX

if(isSet($_GET['lang']))
{
$lang = $_GET['lang'];

// register the session and set the cookie
$_SESSION['lang'] = $lang;

setcookie("lang", $lang, time() + (3600 * 24 * 30));
}
else if(isSet($_SESSION['lang']))
{
$lang = $_SESSION['lang'];
}
else if(isSet($_COOKIE['lang']))
{
$lang = $_COOKIE['lang'];
}
else
{
$lang = 'en';
}

switch ($lang) {
  case 'en':
  $lang_file = 'lang.en.php';
  break;

case 'fr':
  $lang_file = 'lang.fr.php';
  break;

case 'de':
  $lang_file = 'lang.de.php';
   break;

default:
  $lang_file = 'lang.en.php';

}

include_once 'lang/'.$lang_file;
其他两种语言也是一样的

我只是在index.php中加入了这个

应该是这样的:

Array ( [lang] => lang value to put in session [something_1] => something value to put in session )
Array ( [lang] => lang value to put in session [something_1] => something value to put in session ) 
知道为什么吗

确保您的文件在会话设置之前不会回显任何内容 如果您将文件保存为UTF,请确保它是不带BOM的UTF 禁用ini文件中的显示错误。尝试设置“显示错误”,错误;
我希望这会有所帮助,我多次遇到这个问题。

这需要进行基本调试。会话值是否已保存?我们无法仅从代码中看出这一点,您需要提供更详细的信息请不要弄乱问题的格式。它完全不可读。我们一直在修复它,您正在回滚更改。不要使用`来格式化大型代码块。在每行代码前使用4个缩进空格。你也可以看看这里:对不起,谢谢你让我的帖子更具可读性…1-会话开始在每个文件的顶部,2-每个文件都是UTF-8,3-放在哪里?在哪个文件中,我在select.php下面的header.php中执行了操作,但仍然无法正常工作…有两种类型的UTF-8,请尝试安装notepad++,然后打开其中的文件,在菜单中选择“encoding>UTF-8 without BOM”,由于带有BOM的UTF-8在文件开头添加了一些额外的位,甚至可能被浏览器解释为新行!并尝试查看该页面的源代码,可能会打印一些文本,但它已经设置为UTF-8而没有BOM,并且并没有空格、文本等。。。我认为这是服务器的问题。。。我会试着了解更多关于这个。。。顺便说一句,谢谢。请尝试使用此doctype:,或给我一个链接,我将为您检查它
<ul>
    <li><a  href="index.php"><em><b><?php echo $lang['txt1'];?></b></em></a></li>
    <li><a  href="about.php"><em><b><?php echo $lang['txt2'];?></b></em></a></li>
    <li><a  href="services.php"><em><b><?php echo $lang['txt3'];?></b></em></a></li>
    <li><a  href="contact.php"><em><b><?php echo $lang['txt4'];?></b></em></a></li>
</ul>
OUTPUT:
Array ( [lang] => lang value to put in session [something_1] => something value to put in session )
Array ( [lang] => new lang value but not set in session [something_1] => something value to put in session )

<?php

session_start();
$lang = "lang value to put in session";
$something = "something value to put in session";
$_SESSION['lang'] = $lang;
$_SESSION['something_1'] = $something;
print_r($_SESSION);
$lang = "new lang value but not set in session";
$something = "new something value but not set in session";
print_r($_SESSION);
Array ( [lang] => lang value to put in session [something_1] => something value to put in session )
Array ( [lang] => new lang value but not set in session [something_1] => something value to put in session )
Array ( [lang] => lang value to put in session [something_1] => something value to put in session )
Array ( [lang] => lang value to put in session [something_1] => something value to put in session )