我已经谷歌了一段时间,我一遍又一遍地审查了我的代码,仍然没有任何线索。
这是交易:
我有一个多语言网站。点击不同的语言偏好时,我会将其作为?lang=en
左右传递给你。
然后,代码使用GET来读取语言,启动会话并创建一个名为" lang"的cookie。
到目前为止很好,实际上它工作得很好。
我正在考虑创建一个子域,所以我得到了它,我想通过子域使用相同的cookie,我发现我可以使用(名称,值,时间,' /&#39) ;,' .domain.com')
它从未奏效,所以我将事情恢复正常:(名称,价值,时间)就是这样。我以前没有路径或域值。实际上它与其他网站的工作方式相同。
长话短说,在恢复更改后,我无法获得存储在浏览器中的会话或cookie。我查看了存储的信息,并没有该网站的会话或cookie。
答案:是的,我启用了Cookie,此外,我的其他网站工作正常,其他使用Cookie的公共网站也正常运行。
我尝试使用echo来打印cookie和会话值,但仍然没有运气。
以下是我的句柄代码的一部分:
<?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 = 'es';
}
switch ($lang) {
case 'en':
$lang_file = 'lang.en.php';
$lang_dir = 'en';
break;
case 'es':
$lang_file = 'lang.es.php';
$lang_dir = 'es';
break;
default:
$lang_file = 'lang.en.php';
}
include_once 'languages/'.$lang_file;
?>
这个实际上是有效的,因为我正在使用它并起作用:
<?php
$page = $_GET['page'];
if (!empty($page)) {
$content .='html/'. $lang['DIR_PATH']. '/'. $page. '.html';
include($content);
}
else {
include('html/'. $lang['DIR_PATH']. '/'. 'home.html');
}
?>
使用链接
index.php?lang=en
前面的代码读取&#34; en&#34;值,但只要我点击任何链接,它就会更改为&#34; es&#34;。
如果包含文件不起作用,$ lang [&#39; DIR_PATH&#39;]将无效,并且不会显示任何内容。你同意吗?还是我错了?但它确实成功地改变了语言。问题是我无法保存偏好。
提前致谢
答案 0 :(得分:0)
哇! 最后我仔细检查了一切。 我已经得到了答案。
我意识到,不知何故(不知道为什么),我的**
的php.ini
**文件已被修改,现在要求使用不同的路径来保存会话。
我有人有这个问题,请转到php.ini文件并查找
session.save_path
创建特定文件夹,或更改显示在那里的路径
感谢您的阅读,无论如何,感谢您的帮助和时间。