2013-10-20 50 views
0

我在URL中传递一个变量,例如:www.example.com/mypage?gp=32442 注意:这是一个WordPress网站。会话变量不会传递到下一页

gp变量保存后,我将它与当前页面ID进行比较,如果它们相等,我将cookie和会话设置为只重定向到同一页面,而不使用“?gp = 32442 “字符串在最后。

饼干工作正常,但我还添加了会话变量,以防有人被禁用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 {.......} 

回答

1

对于会话cookie的工作应启用,因为会议通过的工作基本sessionId它也是存储在与COOKIE

换句话说,如果用户禁用COOKIE,则无法使用$_SESSION

你可以学习更多的形式herehere

+0

所以我想有传递变量,如果禁用cookie,我不想通过URL来传递它没有别的办法? – Lox

+0

你可以用一个隐藏的输入元素的表单,但是如果用户检查页面源代码可以很容易地看到你设置了什么变量 –

+0

其他方式,但取决于你想要做什么,你可以存储你的价值在数据库中,重定向客户端到一个url,在这里你用最后一个插入id设置一个查询字符串,在第二个页面中,你得到这个id,在db中搜索......这只是一个例子。取决于你想要做什么。 –