2015-12-08 111 views
0

我試圖創建一個函數,在php中混合javascript這些討厭的餅乾。這是一個有效的工具;PHP/Javascript混合Cookie功能

function CookieSet($name,$value){ 
    $exp=date('D, d M Y G:i:s e', strtotime('midnight + 1days')); 
    print("<script language=\"javascript\" type=\"text/javascript\">"); 
    print("document.cookie = \"".$name."=".$value."; expires=".$exp.";\";"); 
    print("</script>"); 
} 

我也有類似的功能,使用同樣的方法刪除Cookie(復位時間過期)。我需要在類似的方式在PHP返回的cookie信息。我創建了下面的函數,但似乎可以讓它工作--PHP不喜歡它。我確定它在某處的標點符號,但似乎無法找到它。

function CookieGet($name) { 
print("<script language='javascript' type='text/javascript'>"); 
print("var name = ".$name." + \"=\";"); 
print("var ca = document.cookie.split(';');"); 
print("for(var i=0; i<ca.length; i++) {"); 
    print("var c = ca[i];"); 
    print("while (c.charAt(0)==' ') c = c.substring(1);"); 
    print("if (c.indexOf(name) == 0) ".$str=." c.substring(name.length, c.length);"); 
print("}"); 
print("</script>"); 
return $str; 
} 

整個程序是用來提供一個小部件到幾個網站。使用純PHP cookie支持,cookie域設置爲源域。通過Javascript創建cookie將cookie域設置爲目標域。我很清楚JavaScript在瀏覽器中運行,而PHP在服務器端運行。我正在嘗試解決跨域cookie問題。是的,我回顧了其他相關解決方案。如果不是遠程交付,這不會是一個問題。

任何幫助表示讚賞。

+0

你說你都知道,PHP是服務器端,JavaScript是客戶端又試圖通過產生得到的cookie在PHP JavaScript的。 –

回答

0

您的打印JS代碼針對刪除Cookie功能有一個線路有問題嘗試改變這一點:這個

print("if (c.indexOf(name) == 0) ".$str=." c.substring(name.length, c.length);"); 

print("if (c.indexOf(name) == 0) " . $str . " c.substring(name.length, c.length);"); 

我刪除了=$str後,因爲引起PHP中的解析錯誤。

但由於$str是空的,沒有做任何事情,你也可以去這一點:

print("if (c.indexOf(name) == 0) c.substring(name.length, c.length);"); 

希望有所幫助。

+0

我試圖做的是將cookie的值返回到PHP變量$ str,以便可以從PHP函數返回。 – Rick

0

應該是一個評論,但它有點長。

我需要在PHP返回的cookie信息以類似的方式

我不知道你的意思。 PHP寫入HTML(和JavaScript,CSS,圖像和....)。有一種機制可以讓HTTP請求($ _COOKIE)發送cookie,因此目標看起來很奇怪。還有其他一些將數據返回給服務器端的方法(在POST中,在URL查詢中,作爲AJAX請求中的自定義標頭....),但不知道你想要實現什麼以及爲什麼不能實現使用正常的方法很難提供建議。

你的PHP函數看起來很混亂。它很難推斷你期望它做什麼。

print("if (c.indexOf(name) == 0) ".$str=." c.substring(name.length, c.length);"); 
... 
return $str; 

$ str在該行執行的位置未設置。你正在給它賦值「c.substring(name.length,c.length);」 (並且還返回相同的字符串)。

通過從PHP代碼生成JavaScript代碼,您必須同時調試PHP和Javascript代碼以獲得工作解決方案。解決問題的正確方法是在javascript中實現函數(或對象),並使它們在javascript中正常工作(使用調試器,控制檯,警報,設置innerHTML等)。然後寫一個簡單的Javascript適當注入任何文字從PHP調用它們...

function CookieGet($name) { 
    print "<script language='javascript' type='text/javascript'>\n"; 
    print "jsGetCookie('$name');\n" 
    print "</script>\n"; 
}