2017-02-10 36 views
1

我是cakephp 3.0中的新成員。我已成功創建了一個cookie,但我想在一分鐘後銷燬該cookie。到目前爲止,我已經做了: -如何在cakephp中1分鐘後銷燬cookie?

public function register_cookie(){ 
    $data = "Hello world!"; 
    $this->Cookie->write('dataFetch', $data, true, time() + (60 * 1)); 
} 
public function getcookie() { 
     $cookiedata = $this->Cookie->read('dataFetch'); 
     echo $cookiedata; 
} 

,但是當我在的getCookie功能一分鐘之後來到它仍然打印即「Hello World」的 我想一個分鐘後cookie將到期。 在此先感謝:)

+0

代碼似乎我的權利。所以這可能是邏輯錯誤。你可以在你調用這個函數的地方提供代碼嗎?這可能是因爲你在獲取之前再次寫入cookie。 –

+0

我已經提供了我自己的這些名字 – kunal

+0

從哪裏調用了'register_cookie'和'getcookie'函數? –

回答

0

在CakePHP 3.x中 -

在CakePHP就可以刪除與

$this->Cookie->delete('bar'); 

一個cookie你也可以用時間()設定的截止日期到過去摧毀一個cookie文件說,你可以擁有這些paramenters

CookieComponent::write(mixed $key, mixed $value = null)

但在CakePHP的2.x的用它來把這些參數

CookieComponent::write(mixed $key, mixed $value = null, boolean $encrypt = true, mixed $expires = null)

要設置過期時間,你必須設置配置這樣

$this->Cookie->config([ 
    'expires' => '+10 days', 
]); 

所以,你的代碼會是這樣

public function register_cookie(){ 
    $this->Cookie->config([ 
     'expires' => '+1 minute', 
    ]); 
    $this->Cookie->configKey('dataFetch', 'encryption', false); 
    $data = "Hello world!"; 
    $this->Cookie->write('dataFetch', $data); 
} 
+0

但是當我在一分鐘之內讀取cookie數據時,它不是getCookie函數中的打印數據 – kunal

0

首先,您應該檢查是否正確設置了cookie過期日期。例如,在Chrome中(在inspect元素觸發控制檯後),轉到Application \ Storage \ Cookies \ Localhost並檢查cookie。作爲1

+0

如何在getcookie函數中做到這一點 – kunal

+0

它顯示我這個過期時間2017-03-10 – kunal

+0

你的代碼是正確的...如果它顯示2017-03-10這意味着它將在3月10日到期。檢查你的時鐘設置是否正確。應該是2月10日你現在的時間+60秒。 –