设置cookie然后刷新页面,PHP

时间:2014-02-14 23:06:11

标签: php cookies

我确信之前已经解决了这个话题,但我似乎找不到适合我问题的解决方案,我确信这不是唯一的。

所以我知道你不能设置一个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>

4 个答案:

答案 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'];
}