2015-06-12 45 views
0

我有一個鎖定內容的博客。用戶需要將他們的電子郵件地址輸入表單才能看到完整的內容。用JS實現cookie來識別返回的訪問者

現在的問題是,同一用戶必須在每個帖子上輸入他們的電子郵件。如何實現cookies來:在窗體上

1)提交,用戶上一個博客頁面加載一個cookie 2),檢查是否cookie的存在,如果是這樣,加載完整的內容

-

我使用cookies的經驗極少。謝謝!

+0

你的意思是前端的cookies或後端的cookies? –

回答

1

在前端創建JS餅乾很簡單:「[email protected]

document.cookie="[email protected]"; 

它創建了一個名爲「電子郵件」擁有的內容餅乾

當用戶再次訪問您的網站時,您可以檢查cookie是否存在。

if (document.cookie.indexOf("email")>=0) { 
    // Log them in! 
} 
else { 
    // Show log-in field! 
} 

您可能還想讓cookie在一段時間後過期。當你創建一個cookie,你可以設置一個到期日期:

document.cookie="[email protected];expire=06/12/2015"; 

然而,這並不像使用斷絕端Cookie安全。

+0

這工作完美。我知道這不是很安全,但沒關係。這只是一個領先的戰略。謝謝! –

1

客戶端上的Cookie不會爲您提供所需的保護,因爲任何使用瀏覽器的人都可以自行插入這些Cookie。此外,服務器端內容(文章)的客戶端安全性本質上不起作用。任何聰明的用戶將能夠克服不在服務器上的任何形式的安全措施。

這就是說,如果你與用戶完全確定誰不安裝特定的延伸或運行特定的腳本來「解鎖」你的網站 - 你可以做線沿線的東西:

if(document.cookie.indexOf("entered_email=true") === -1){ 
    // show email request field 
} else { 
    // show content 
} 

當用戶輸入他們的電子郵件:

document.cookie += (document.cookie ? ";" : "") + "entered_email=true"; 
1

你也許可以使用這個localStorage對象:

HTML

<input type="text" id="email"/> 
<input type="button" id="submit" value="submit"/> 

JS

$(document).ready(function(){ 
    if (localStorage.getItem("email")){ 
     $("#email").val(localStorage.getItem("email")) 
     // unlockContent(); 
     // otherStuff(); 
    } 
    $("#submit").click(function(){ 
     localStorage.setItem("email", $("#email").val()); 
     alert("Saved: " + localStorage.getItem("email")); 
     // unlockContent(); 
     // otherStuff(); 
    }) 
}) 

小提琴here

編輯:但本傑明在他的回答中提到,這是不是一個真正的安全機制 - 除非你只是想驗證電子郵件而是一個特定電子郵件。