2011-06-29 78 views
0
if(!isset($_COOKIE['oauth_token'])){ 
session_start(); 
if (empty($_SESSION['access_token']) || empty($_SESSION['access_token']['oauth_token']) || empty($_SESSION['access_token']['oauth_token_secret'])) {header('Location: ./clearsessions.php');} 

$access_token = $_SESSION['access_token']; 
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $access_token['oauth_token'], $access_token['oauth_token_secret']); 

setcookie('oauth_token', $access_token['oauth_token'], time()+60*60*24*30); 
setcookie('oauth_token_secret', $access_token['oauth_token_secret'], time()+60*60*24*30); 
} 
//else use the cookies 
else{ 
$oauth_token = $_COOKIE['oauth_token']; 
$oauth_token_secret = $_COOKIE['oauth_token_secret']; 
$connection = new TwitterOAuth(CONSUMER_KEY, CONSUMER_SECRET, $oauth_token, $oauth_token_secret); 
} 

這裏是我使用的代碼片段,基本上我想爲用戶存儲一個長期cookie,所以他們不必登錄到Twitter,並且每次都要經過授權我的web應用程序的漫長過程他們連接。所以我試圖在這個庫中使用cookie(twitteroauth),因爲某些原因,頁面不會加載這段代碼,如果我要取出if else,並且只需將$ _SESSION部分留在代碼中就可以不用拴住。PHP cookie的使用,幫助?

我很困惑,因爲我檢查和cookie成功存儲,任何想法?

回答

0

我想你「支票」的cookie是不正確的(不是代碼明智的,但邏輯明智),讓我刪除所有代碼exect爲if - else語句來:

if(isset($_COOKIE['oauth_token'])){ 
    // Using $_SESSION 
} 
// else use the cookie 
else { 
    // Using $_COOKIE 
} 

你的邏輯說'如果cookie存在使用會話,否則使用cookie',我想你的意思是說'如果cookie不是不是存在使用會話,否則使用cookie'。您必須在第一個if-陳述中反轉您的支票。

if(!isset($_COOKIE['oauth_token'])) { 
    // Use cookie here 
} 

更新我已經重新閱讀你貼一遍又一遍的部分,正如你說你的腳本沒有用這段代碼的任何輸出,我可以的嘛拿出來是你的應用程序崩潰在new TwitterOAuth(...);。你能否嘗試在沒有這兩行的情況下運行你的代碼(暫時刪除它們,看看你是否有頁面輸出)。


更新#2我注意到你說你的代碼'snippit」的工作,但結合的編碼沒有。如果未設置會話,則使用header('Location: ./clearsessions.php');,如果將其替換爲echo "error";,那麼您是否在瀏覽器窗口中獲得該值。 注意這是非常簡單的調試,因爲我對系統上發生的事情一無所知,但它被證明是有效的。您也可以選擇使用echo-flush()組合,這會在您每次通過某一行時強制輸出到瀏覽器(然後您可以檢查代碼的執行距離)。

+0

是的,我改變了它,雖然我從isset注意到我沒有反過來支票。但它仍然無法執行。 – Lewis

+0

更新了我的答案,可否請您檢查'TwitterOAuth()'是否是您的問題? – KilZone

+0

對,我只是嘗試了一些改變。我已經將它們粘貼到了它們上面,以便比看到評論更容易看到它們。 http://pastebin.com/r9DtcUSW - 如果您沒有時間閱讀,我會完全理解。先謝謝了。 – Lewis

0

if (isset($_COOKIE['oauth_token'])) { 

更多信息您是否嘗​​試過:

if(!isset($_COOKIE['oauth_token'])){ 

注意感嘆號;)意思是否設置(是)。

+0

我有,還沒有雪茄! – Lewis

+0

你能詳細說明邏輯不進入的代碼部分嗎? – Phliplip

+0

如果你願意,我已經詳細闡述了一個更大的粘貼在這裏發現; http://pastebin.com/r9DtcUSW – Lewis