2017-09-28 42 views
0

SOLUTION:

$ _COOKIE用下劃線替代週期。

str_replace('.','-',$cookie_name); 

問題

我設置這樣一個cookie。

$cookie_name = '_visited-'.$user_ip.'-'.$visted_link; 
setcookie($cookie_name,'visited',time() + (86400 * 30), "/"); 
header('Location: '.$_SERVER['REQUEST_URI']); 
exit; 

然後嘗試查看cookie是否已設置,並將其從像這樣的鏈接數組中解除鏈接。

foreach($links['unique'] as $link){ 
    $cookie_name = '_visited-'.$user_ip.'-'.$link; 
    if(isset($_COOKIE[$cookie_name])){ 
     if(($key = array_search($l, $links['unique'])) !== false) { 
      unset($links['unique'][$key]); 
     } 
    } 
} 

奇怪的是,即使cookie被在foreach使用isset明確規定我不能檢測到該Cookie存在,所以我無法刪除訪問過的鏈接。

回答

0

確定發現問題。我將用戶IP作爲cookie名稱的一部分。 。正在被_取代,所以只是繼續並取代所有。與 - 設置cookie時。按照我現在的意圖完美地工作。

0

您無法在設置的相同頁面上訪問cookie。

正如你可以在manual看到它明確指出它:

一旦餅乾已經確定,就可以把他們與$ _COOKIE數組的下一個頁面加載訪問。

+0

這是請求一個單獨的時間。 Cookie設置完成後,不在同一頁上重新加載頁面。 – AvalonRychmon

0

如何將$鏈接從一個頁面轉移到另一個頁面? PHP的每個調用都是獨立的。這就是爲什麼我將cookie保存到數據庫中的會話表。每個頁面的第一步是從數據庫加載會話。

我認爲你的cookie永遠不會被發現,因爲在每次執行時都會啓動$ links。在頁面頂部添加print_r($鏈接)以查看並編輯您的問題。

+0

$ links ['unique']是從存儲在我的數據庫中的鏈接列表創建的http://prntscr.com/gqvgh5 – AvalonRychmon

相關問題