2015-08-23 38 views
1

我一定保存的憑證,如OAuth的祕密和OAuth令牌密鑰內會話變量是從Twitter的OAuth的提供商獲取如下:PHP:會話變量中存儲的訪問令牌上的表單提交失去

$_SESSION['o_token'] = $access_token['oauth_token']; 
$_SESSION['o_token_secret'] = $access_token['oauth_token_secret']; 

要使確保訪問令牌確實存儲在我的會話變量中,我試圖在提交表單之前在屏幕上回顯它們,並且正如預期的那樣,顯示了令牌。

現在,我有一個表單,並且在提交表單時,會話變量中存儲的訪問令牌將丟失。當我嘗試呼應了這樣的事情我提交表格後:

if(isset($_POST['submitted'])) 
    { 
     echo $_SESSION['o_token']; 
    } 

沒有東西顯示出來,因爲裏面存放$_SESSION['o_token']值現在是空的。

當表單提交後,我的會話變量中存儲的訪問令牌數據是否丟失?

PS:爲了確認,只有在訪問令牌數據丟失的表單提交,而不是其他會話變量數據,我試圖定義一個模擬會話變量:

$_SESSION['mock'] = "mock"; 

,然後試圖以後呼應它表單提交:

if(isset($_POST['submitted'])) 
    { 
     echo $_SESSION['mock']; 
    } 

上面的代碼確實顯示mock,這意味着存儲會話變量內僅訪問令牌數據丟失。

這裏似乎有什麼錯?

編輯:是的,我在我的代碼的開始處包含了session_start()

+0

你在每個頁面的頂部調用'session_start()'? – nomistic

+0

@nomistic是的我。 –

回答

0

你說你回聲會話,這意味着你已經把會話開始在頁面的開始。

檢查您的會話變量

+0

是的,我可以回顯存儲在另一個會話變量中的後輸入值。 –

+0

你檢查了目標網頁嗎?會話開始也在那裏? –

+0

目標頁面本身是相同的頁面。表單提交後,頁面刷新。 –

0

你可以做的另一件事情充滿了你的帖子的輸入值,是通過傳遞形式的令牌,如果你不想調用session_start(做),當然,如果它不構成任何安全隱患

<input type="hidden" name="acces_token" value="<?= $_SESSION['o_token']?>"/> 
<input type="hidden" name="o_token_secret" value="<?= $_SESSION['o_token_secret']?>" /> 

該值應該在$_POST陣列中。希望這個幫助。

+0

當我嘗試檢查表單元素時,這是我從源代碼得到的:''我定義的文本字段如下:'< input type =「hidden」name =「o_token」value =「<?php echo $ access_token ['oauth_token'];?>」/>'。隱藏文本字段的值爲空。 –

+0

你想要echo $ _SESSION ['access_token']'不'$ access_token ['oauth_token']' – mdamia

+0

這也不能解決問題。隱藏文本字段的值仍爲空。 –

相關問題