2012-02-13 202 views
0

好吧,我有一些來自另一家公司的遺留代碼,我必須維護/修復。此代碼的一個特點是,有多個網站與此主要網站相關聯,並且每當您從其他網站導航到此網站時,其他網站的徽標都會顯示在主要網站上(基本上這是一項服務爲多家銀行使用,並且每家銀行都希望擁有自己的品牌)。結束會話/清除Cookies

問題是,一旦你從site1導航到主站點,如果你從站點2導航到主站點,你仍然會得到site1的品牌。

有沒有辦法清除會話的cookies?到目前爲止,他們已經得到這樣的代碼,應該THEORETICALLY工作:

else 
    { 
     setcookie("cuid","",time() - 31536000); //DELETES COOKIE 

     if($cuid_demo!="samplecu" && $cuid!="samplecu") 
      setcookie("cuid",$cuid,time()+2592000); //2592000 = 1 month 

     $link=dbconnect(); 

     if(!$link) 
      die("error: Could not connect to database - ".dberror()); 

     select_db($link) or die("error: ".dberror()); 

     if (isset($admin_id)) 
     { 
      $cuid = $admin_id; 
      $id = $admin_id; 
     } 

     $query="UPDATE cusucceed SET visits=visits+1 WHERE id = '$cuid'"; 
     $result=dbquery($link, $query)or die("Database Server Error 2: ".dberror()); 
     include("index_main.php"); 

    } //END IF/ELSE TO CHECK FOR PREVIOUS VISIT WITH THE PAST MONTH 
} 

在它什麼都沒做之前。正如評論所說,不應該setcookie("cuid", "", time() - 31536000);刪除cookie。

+1

剛一說明:由PHP吐出的錯誤消息不打算爲公衆而只對開發者,因爲它可能[泄露敏感信息(https://www.owasp.org/index。 PHP/Information_Leakage)。 – Gumbo 2012-02-13 15:32:35

+0

我知道,我不會在自己的代碼中這樣做 - 我的公司只是被僱用來解決cookie問題。儘管僱傭我們的公司沒有預算來修復錯誤信息。 – 2012-02-13 15:35:58

回答

3

當您重置cookie時,您需要爲cookie設置正確的域。

setcookie('name', NULL, -86400, 'cookie_path', 'subdomain.site1.com'); 
+0

我如何找到這些信息?餅乾是我仍然學習的一件事(雖然這絕對是一個好的體驗) – 2012-02-13 15:29:24

+1

如果你使用域名andrew.com例如,你需要像這樣設置cookie:** setcookie('name', NULL,-86400,'/','andrew.com'); ** – nateless 2012-02-13 15:48:26

+0

是的,但是像'cookie_path'一樣呢?我正在使用的文件在主網站上,那麼我可以做www.mainsite.com嗎?還是必須來自推薦人? – 2012-02-13 15:56:35