【问题标题】:Session variable won't pass to the next page会话变量不会传递到下一页
【发布时间】:2013-10-20 13:36:42
【问题描述】:

我在 url 中传递了一个变量,例如:www.example.com/mypage?gp=32442 注意:这是一个 WordPress 网站。

保存 gp 变量后,我将其与当前页面 id 进行比较,如果它们相等,我将设置 cookie 和会话并仅在没有“?gp=32442”的情况下重定向到同一页面最后的字符串。

cookie 工作正常,但我还添加了 session 变量以防有人禁用 cookie。

当我在禁用 cookie 的情况下进行测试时,重定向后会话变量为空。我在没有重定向的情况下进行了测试,并且正确添加了会话变量。

如何在重定向后保留会话变量?

 session_start();

    if(isset($_GET["gp"])){ 
            $url_post_id = $_GET["gp"];
        }

    $current_id = get_the_ID();

    // $pageURL is the url without the "?gp=32442" at the end

    if($current_id == $url_post_id){                    
        setcookie("gpcid", $url_post_id, time() + (60 * 60 * 24 * 14));                 
        $_SESSION['gpsid'] = $url_post_id;
        header('Location: '.$pageURL.'');
    }

    if($_COOKIE["gpcid"] == $current_id || $_SESSION['gpsid'] == $current_id  ){
        the_content();
       } else {.......}

【问题讨论】:

    标签: php session redirect session-variables


    【解决方案1】:

    应该启用会话工作 cookie,因为会话通过一个基本的sessionId 工作,它也存储在COOKIE 中。

    换句话说,如果用户禁用了COOKIE,您将无法从使用$_SESSION 中受益。

    您可以通过 here 和 here

    了解更多信息

    【讨论】:

    • 所以我想如果 cookie 被禁用并且我不想通过 url 传递变量,没有其他方法可以传递变量?
    • 你可以用一个隐藏输入元素的表单,但是如果用户检查页面源可以很容易地看到你设置了什么变量
    • 还有其他方法,但取决于您想要做什么,您可以将值存储在数据库中,将客户端重定向到您设置带有最后插入 id 的查询字符串的 url,然后在第二页中你得到那个id,在db中搜索......这只是一个例子。取决于你想做什么。
    • 感谢所有有用的信息 :)
    • Cu placere, Roxana :)。
    猜你喜欢
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 2015-10-22
    相关资源
    最近更新 更多