如何使用PHP会话和Cookie保留语言状态
我的index.php中有以下内容:如何使用PHP会话和Cookie保留语言状态,php,session,cookies,Php,Session,Cookies,我的index.php中有以下内容: 然后我有一些内容 我在file.php中有这样一个文件: <?php session_start(); header('Cache-control: private'); if(isSet($_GET['lang'])) { $lang = $_GET['lang']; $_SESSION['lang'] = $lang; setcookie("lang", $lang, time() + (3600 * 24 * 30)); } else i
然后我有一些内容
我在file.php中有这样一个文件:
<?php
session_start();
header('Cache-control: private');
if(isSet($_GET['lang']))
{
$lang = $_GET['lang'];
$_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 'de':
$lang_file = 'lang.de.php';
break;
case 'es':
$lang_file = 'lang.es.php';
break;
default:
$lang_file = 'lang.en.php';
}
include_once 'languages/'.$lang_file;
?>
我有这3个文件,我是说lang.en.php等等
它不工作,我的页面是空的,没有文本,为什么?怎么了
php包含
<?php
$h1 ="HOME";
$h2 ="ABOUT US";
$h3 ="CONTACT";
$h4 ="FAQ";
$txt1 = "Here goes txt,Here goes txt,Here goes txt,Here goes txt,
Here goes txt,Here goes txt,Here goes txt,Here goes txt,
Here goes txt, Here goes txt,Here goes txt,Here goes txt.";
?>
我不知道这是怎么回事。。。我应该换什么?
有人能帮我吗。谢谢。除了一些HTML之外,您没有打印任何内容。要查看lang.en.php文件中字符串的内容,需要使用
echo
语言构造输出它们
<?php
echo $txt1;
?>
当您使用适当的代码结构时,这些问题实际上永远不会发生:缩进控制结构、避风港控制器(逻辑)和视图(表示)。您在一个文件中混合了很多内容,这显然使您和其他人很难阅读和理解代码。即使您使用的是php,也请尽量在编写代码时考虑可读性/可维护性。
session\u start()
需要放在文档的顶部
会话必须在将某些内容发送到浏览器之前启动。我测试了您的代码(它来自Bitrepository tutprial right:)
好的,文件.php
应该在函数.php
中(如果有的话)
我假设您有index.php
,它从您的语言文件中回显这些变量,如下所示:
echo $h1;
echo $h2;
echo $h3;
echo $txt1;
要更改语言,请参阅您的文件.php
,它在cases中指定。如果你想学英语:
index.php?lang=en
index.php?lang=de
index.php?lang=es
等等
轻松右键\(^\u^)/
查看bitrepository以获得更详细的教程。我还建议对语言文件使用define()
前
回应:
echo TITLE;
您必须在lang.en.php、lang.ru.php中定义数组 lang.en.php
$lang = array();
$lang["PAGE_TITLE"] = "Some title";
$lang["MENU_HOME"] = "Home";
$lang["HOME_CONTENT"] = "Some content";
lang.ru.php
$lang = array();
$lang["PAGE_TITLE"] = "Russian title";
$lang["MENU_HOME"] = "Russian home";
$lang["HOME_CONTENT"] = "Russian content"; ...
然后,将其输出到页面中
<?php echo $lang["PAGE_HOME"]; ?>
<?php echo $lang["MENU_HOME"]; ?>
<?php echo $lang["HOME_CONTENT"]; ?>
这些lang.en.php文件包含什么?另外,如果打印,$lang
和$lang\u文件
包含哪些内容?切勿使用会话或cookie保留语言状态。但仅使用地址字符串元素。子域(例如en.wikipedia.org)是最好的选择,然后是路径或查询字符串。我在index.php中有它,为什么我在file.php中需要它?如果你在index.php中有它,你在file.php中不需要它。您发布的代码正常工作,因此它表明index.php可能存在问题。你能发布你的index.php文件吗?
$lang = array();
$lang["PAGE_TITLE"] = "Russian title";
$lang["MENU_HOME"] = "Russian home";
$lang["HOME_CONTENT"] = "Russian content"; ...
<?php echo $lang["PAGE_HOME"]; ?>
<?php echo $lang["MENU_HOME"]; ?>
<?php echo $lang["HOME_CONTENT"]; ?>