尝试基于$_POST参数设置Cookie

时间:2011-11-30 作者:Richard Sweeney

我正在做一点语言检测,首先检查$_SERVER[\'HTTP_ACCEPT_LANGUAGE\']. 如果用户希望覆盖语言选择,那么会有一个选择列表,用户可以在其中选择自己喜欢的任何语言。

所以:我需要首先检查$_POST superglobal包含选择列表中的值。如果是的话,我想做个饼干。如果没有$_POST 值集,然后我检查是否有cookie,如果没有cookie,我将继续使用$_SERVER[\'HTTP_ACCEPT_LANGUAGE\'] 作为默认语言。

代码如下所示:

function rps_set_language_preferences() {

  global $language;

  if( isset( $_POST[\'sprak\'] ) ) {

    $possible_langs = array( \'en\', \'de\', \'ko\' );

    $my_cookie = $_POST[\'sprak\'];

    if( in_array( $my_cookie, $possible_langs ) ) {

      setcookie( \'sprak\', $my_cookie, time() + 60*60*24*365, COOKIEPATH, COOKIE_DOMAIN );

      $language = $my_cookie;

    }

  } else {

    if( isset( $_COOKIE[\'sprak\'] ) ) {

      $language = $_COOKIE[\'sprak\'];

    } else {

      /* This function checks the $_SERVER[\'HTTP_ACCEPT_LANGUAGE\'] */
      $language = rps_detectlanguage();

    }

  }

}
add_action( \'wp\', \'rps_set_language_preferences\' );
但是。。。这不管用!

如果我试着用\'wp\' 在cookie出现之前,我需要刷新屏幕两次。我想它没有及时设置,但我不知道如何确保它会及时设置!

有什么建议吗?

1 个回复
SO网友:Otto

我已经能够在template\\u重定向和init操作挂钩上正确设置cookie。您可以尝试使用其中的一种。

结束

相关推荐

当尝试向我的登录页面添加一个css文件时,会出现“Headers Always Sent”?

我看过的每一篇关于这个主题的教程都已经过时了,所以我希望这里的人能帮助我。我想为我的wp登录设置样式。带有CSS文件的php页面。但我想以一种在Wordpress更新时不会被覆盖的方式来做。据我所知,根据我读到的图茨,在我的主题函数中使用函数添加它的最佳方式。php文件。不幸的是,人们建议使用的代码并不适合我。这是我添加的代码。<?php function custom_login() { echo \'<link rel=\"stylesheet\" href=\"wplog