我确信之前已经解决了这个话题,但我似乎找不到适合我问题的解决方案,我确信这不是唯一的。
所以我知道你不能设置一个cookie,并期望在不刷新页面的情况下使用它。所以我想知道我的选择是什么。
我有一组简单的链接,可以通过为该用户的语言首选项设置cookie来更改页面上的语言。我需要检测该cookie以分配变量,以便我可以将页面输出更改为指定的语言。
因此,当按下按钮时,它会向URL栏发送一个get变量,然后设置cookie。刷新页面后,我得到了我想要的东西。
基本上,我需要传递GET变量然后刷新页面。我怎么能这样做?
我的PHP代码:
// if someone is trying to change the language
if(isset($_GET['lang']))
{
// change the cookie value to that language
$value = $_GET['lang'];
}
// elseif they are not trying to change the language, and a cookie is already set
elseif(isset($_COOKIE['language_pref']))
{
// maintain the value of the language set in the cookie
$value = $_COOKIE['language_pref'];
}
// if get nor cookie is set
else
{
// set default language to english
$value = 'en_US';
}
$name = 'language_pref';
// cookie expires in 2 years
$expireDate = time() + (2 * 365 * 24 * 60 * 60);
$path = '/';
$domain = 'example.com';
$secure = false; //only transmit the cookie if a HTTPS connection is established
$httponly = true; //make cookie available only for the HTTP protocol (and not for JavaScript)
setcookie( $name, $value, $expireDate, $path, $domain, $secure, $httponly);
我的HTML:
<a href="?lang=zh_CN">ZH</a>
<a href="?lang=en_US">EN</a>
答案 0 :(得分:0)
好的,这就是你的页面的样子:
> Read cookie and get the language
> Read GET variable and SET COOKIE
> Print out stuff in their language
你只是按错误的顺序做事。如果按此顺序执行操作:
> Read GET variable and SET COOKIE
> Read cookie and get the language
> Print out stuff in their language
您已拥有正确的语言,无需刷新页面。
答案 1 :(得分:0)
我认为你所缺少的是链接到包含这个php的网址的按钮。
如果您实现的按钮有一个包含此页面网址的href,那么当您点击它时,您将刷新页面并将cookie的内容读入$ value。
尝试关闭php标签,然后添加:
<a href='PAGE_URL_HERE'>button</a>
答案 2 :(得分:0)
您可以使用代码的else组件中包含的php标头或JavaScript,只有在语句满足您的所有条件时才会执行,因为您只需要在设置和修改cookie后刷新页面
答案 3 :(得分:0)
使用这个php清除它,这允许我根据get变量翻译当前页面,并使用存储的cookie翻译所有后续页面
if(isset($value))
{
$language = $value;
}
else
{
$language = $_COOKIE['language_pref'];
}