存储在$ _SESSION中时,$ _SERVER [' REQUEST_URI']将返回数字而不是$ _GET值

时间:2017-10-17 20:05:46

标签: php get session-variables request-uri

我在第一页中有以下代码:

{% load <templatetag file> %}
{% get_language_info_list for LANGUAGES as languages %}
<ul>
{% for language in languages %}
   {% if not language.code == LANGUAGE_CODE %}
    <li>
        <a href="{% change_lang language.code %}">{{ language.name_local }}</a>
    </li>
   {% endif %}
{% endfor %}
</ul>

当我在下一页打电话给$_SESSION['redirect_address'] = $_SERVER['REQUEST_URI']; 时,它会给我这样的内容:

$_SESSION['redirect_address']

虽然它必须给我一些像:

/host/example.php?1508270070

当我在第一页的最后一个代码检查/host/example.php?url=XYZ 的值时,它会给我正确的值,同时在第二页的代码的最开头检查相同的$_SESSION['redirect_address']它返回数字,试图清除饼干,没有运气。

通过网络花了4个小时,没有人能回答我的问题,请帮助!

1 个答案:

答案 0 :(得分:0)

您的NGINX正在做一些可能不应该

的事情

...但这是目前配置的内容

  1. 根据RFC3986,完整路径和&#34;查询字符串&#34;应该包含在URI中。
  2. 根据PHP $_SERVER文档,$_SERVER('REQUEST_URI') 不会包含查询字符串。各种服务器配置和php版本对于该变量中存储的数据(如果有的话)具有非常不同的结果。
  3. 检查您的环境

    根据您现有的环境配置,您应该检查以下SERVER变量实际获得的值:QUERY_STRINGORIG_PATH_INFOPATH_INFO,{{ 1}},PATH_TRANSLATEDSCRIPT_NAMEREQUEST_URI

    相应地调整会话重定向。