2011-11-20 104 views
1

我正在與CodeIgniter一起使用Twitter和Facebook設置一些用戶登錄功能到我的網站,這部分工作和會議工作正常。CodeIgniter Cookie不會設置,但會話正在工作?

當我嘗試設置cookie它不工作

//Setup a guid 
$guid = uniqid(); 

//Setup a random cookie and point it to db user 
$cookie = array(
    'name' => 'TheCookieName', 
    'value' => $guid, 
    'expire' => 100, 
    'domain' => BASE_URL, 
    'secure' => TRUE 
); 

    set_cookie($cookie); 

    var_dump(get_cookie('TheCookieName')); // bool(false) 

我的自動加載的文件是很簡單的

$autoload['helper'] = array('paging_helper','url','cookie'); 

我顯然失去了一些東西小事?任何線索?

感謝

回答

2

這個問題可能是您的域變量 BASE_URL,這不是CI常量的一部分中,可能不包含你想到還是什麼什麼餅乾初始化需要。

試着做這樣的:

//Setup a guid 
$guid = uniqid(); 

//Setup a random cookie and point it to db user 
$cookie = array(
    'name' => 'TheCookieName', 
    'value' => $guid, 
    'expire' => 86500, // have a high cookie time till you make sure you actually set the cookie 
    'domain' => '.example.org', // the first . to make sure subdomains isn't a problem 
    'path' => '/', 
    'secure' => TRUE 
); 

    set_cookie($cookie); 

記住餅乾永遠不會成爲可用,直到一個新的請求已經作出。
重定向到cookie設置中指定的域上的另一個頁面,並再次檢查cookie。

+0

將BASE_URL設置爲空,並讓CI找出它,但它工作但出於某種原因,我不得不調用像 - set_cookie($ param,$ param,$ param,$ etc)這樣的函數,而不是作爲數組傳遞。不知道爲什麼,但它的工作原理。 –

+0

聽起來很奇怪...你確定你沒有使用setcookie()而不是set_cookie()? – Repox

+0

@Repox如果我們要在localhost/folder_name /中測試我們的代碼,那麼域中應該是什麼? – Suleman

1

您不能設置在同一個實例訪問的cookie。您應該在設置cookie或刷新後重定向。這就是爲什麼var_dumping get_cookie總是返回false的原因。你還應該設置其餘的參數。 見setcookie

+0

即使我重定向的cookie仍然是假的。另請注意,set_cookie()是一個CodeIgniter函數,而不是本地PHP setcookie() –

+0

@SeanHJenkins你可以嘗試var_dumping $ _COOKIE [「TheCookieName」] – Mob

2

確保您的HTTPS設置安全=> TRUE只有