2013-10-20 73 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中搜索......這只是一個例子。取決於你想要做什麼。 –