2014-01-09 64 views
2

我一直試圖弄清楚這一點,但我似乎無法得到它的排序。在PHP中爲Body添加一個類,並保留一個會話

我在客戶端網站上構建了一個輔助功能部分,我有兩個按鈕,其中一個是font-size,另一個是greyscale

我需要這些類留在身體上,直到再次點擊刪除,因爲用戶不希望不斷點擊按鈕才能看到該網站。

我想用會話或cookie存儲這些類,但是已經做了一些閱讀,會話存儲cookie,因此無論哪個都是最佳選擇。

我使用WordPress的網站,所以如果有什麼我可以使用的功能是聰明的,會是需要了解的!

任何人都可以幫我嗎?

回答

1

如果你想使用localStorage的您可以使用此代碼。

// Check if localStorage is supported 
if ('localStorage' in window && typeof localStorage == 'object') { 
    $(document).ready(function() { 
    // Set the class if greyscale is set 
    // Note that localStorage saves everything as strings 
    if (localStorage["greyscale"] == "1") { 
     $('body').addClass('greyscale'); 
    } 
    // Register click listener for the button 
    $('#button').click(function() { 
     // Toggle greyscale on and off 
     if (localStorage["greyscale"] != "1") { 
     $('body').addClass('greyscale'); 
     localStorage["greyscale"] = "1"; 
     } 
     else { 
     $('body').removeClass('greyscale'); 
     localStorage["greyscale"] = "0"; 
     } 
    }); // - button click 
    }); // - doc ready 
} 

JSFiddle

+0

你是否推薦一個後備系列?雖然,檢查了[我可以使用](http:// caniuse。com /#search = sessionstorage)它似乎很好地支持,不需要一個... –

+0

這工作完美!直接工作:D –

+0

如果你願意,你可以做一個後備。這取決於你想如何頑強地提供支持。我不會推薦它,因爲我認爲滿足極少數用戶(如果有的話)是很多工作。 – forsvunnet

0

this answer提到:

的主要區別在於會話數據被存儲在服務器上,而cookie數據被存儲在客戶端上。因此,客戶可以輕鬆修改cookie內容,但必須更加努力地修改會話內容。

+0

乾杯解釋它們之間的區別,所有的存儲是YES或NO,這將打開類或關閉,因此,如果用戶想要改變自己,他們可以去mad –

+0

準確地;)Cookies是要走的路 – Ambidex

1

會話通常使用cookie,但數據存儲在服務器端,cookie僅用於識別它。

假設您沒有理由知道用戶是否在服務器端使用灰度級,那麼您可以完全在JS中完成此操作。

例如使用一些巧妙的jQuery插件餅乾https://github.com/carhartl/jquery-cookie

//set cookie and add class on button click 
$('#button').click(function(){ 
    $.cookie('greyscale', true); 
    $('body').addClass('greyscale'); 
}); 

//check for cookie on document load 
$(function(){ 
    if($.cookie("greyscale")){ 
     $('body').addClass('greyscale'); 
    } 
}); 

此外,也請記住,這個cookie將被髮送到服務器並返回一遍又一遍,所以如果你不需要這些服務器上做你應該使用一些更現代的解決方案,比如HTML5 localStorage。有幾個庫可以用來在客戶端保存數據。他們在舊版瀏覽器上使用現代功能並回退到舊版(如Cookie)。例如,請檢查http://pablotron.org/software/persist-js/

+0

我目前正在使用類似於這個使用jQuery.Cookie的東西,但是,它似乎有添加和刪除cookies的問題。 如何在點擊時刪除cookie並確保刷新時不會改變這些狀態? –

+0

請檢查您正在使用的插件的文檔。用這個https://github.com/carhartl/jquery-cookie你可以做$ .removeCookie('greyscale');刪除cookie。同時檢查Firefox firebug或鉻開發者工具「cookies」選項卡以測試瀏覽器中實際發生的事情。 – fsw

+0

是的,我深入瞭解,只是添加和刪除cookies的問題,$ .removeCookie通常不喜歡刪除cookie來刪除類 –

0

有幾個方法可以解決這個

1)請$ _SESSION的信息。

2)將信息保存在cookie中。

根據您的情況和您要存儲的數據(這些數據並不重要),我建議您將其存儲在Cookie中,而不要打擾服務器以跟蹤每個用戶。

您可以輕鬆地通過javascript將信息存儲在cookie中。

這裏是一個JavaScript的餅乾參考你:

http://www.w3schools.com/js/js_cookies.asp

存儲的cookie裏面的信息後,你可以檢索通過JavaScript或PHP存儲一個cookie裏面的信息。 請記住: Javascript =客戶端(服務器不會被打擾)&在您的dom準備好後,您將不得不將相關類添加到您的身體。 PHP =服務器端,這意味着你不必在dom準備好之後添加一個類,並使用元素上已經設置的相應類來打印你的html。

PHP餅乾引用:

http://www.w3schools.com/php/php_cookies.asp

http://davidwalsh.name/php-cookies

+1

請不要使用w3schools作爲參考,請參閱http://w3fools.com/以獲取解釋,爲什麼不參考教育資料中的此網站。 – DanFromGermany

+1

不知道這個網站,當我開始的時候,我的學校幫助過我,那時我沒有任何麻煩。 – Syd

+0

js_cookies.asp鏈接上的示例代碼包含很多錯誤。代碼通常是不好的做法,甚至沒有正確格式化。看看最後一個例子,他們在沒有''標籤的HTML中使用JavaScript,..它不會事件工作 – DanFromGermany

0

儲存於一個cookie。

使用cookie可以選擇cookie何時到期,使用會話時 - 會話被銷燬時信息丟失,例如:當用戶註銷時。

用戶必須手動刪除Cookie刪除「體類信息」

相關問題