Javascript 设置客户端cookie以防止重新注册
我没有运行服务器端代码的权限,因此无法为注册表执行PHP会话。我将使用客户端cookie,以确保每个人(每个唯一的电子邮件)只注册一次 接下来我想我掌握了窍门 但看起来,即使我输入了一封新的电子邮件,它也总是会返回Javascript 设置客户端cookie以防止重新注册,javascript,jquery,cookies,Javascript,Jquery,Cookies,我没有运行服务器端代码的权限,因此无法为注册表执行PHP会话。我将使用客户端cookie,以确保每个人(每个唯一的电子邮件)只注册一次 接下来我想我掌握了窍门 但看起来,即使我输入了一封新的电子邮件,它也总是会返回警报(“您已经注册”)。为什么呢 $("#submitBtn").click(function (event) { var subject = "Registration for Walk-a-thon", nam
警报(“您已经注册”)代码>。为什么呢
$("#submitBtn").click(function (event) {
var subject = "Registration for Walk-a-thon",
name = document.getElementById("name").value,
email = document.getElementById("email").value,
message = document.getElementById("message").value;
if (!$.cookie('client_email_cookie')) {
$.cookie("client_email_cookie", email, { path: '/', expires : 10});
log("Cookie: " + $.cookie("client_email_cookie"));
var link = "mailto:Jun.Ma2@otis.com; Allison.Rocca@utc.com"
+ "?cc=daniel.turcotte@carrier.utc.com"
+ "&subject=" + escape(subject)
+ "&body=" + escape(message)
;
window.location.href = link;
}
else {
alert("You've already registered");
}
});
如果(!$.cookie('client\u email\u cookie'))
只检查cookie是否存在,而不检查其值
$.cookie('client\u email\u cookie')
返回cookie的值(在您的例子中是email
)。将该值与输入的电子邮件进行比较,查看其是否已注册
另外,不要说明显的,但如果用户愿意,只要删除cookie,从不同的浏览器或计算机注册,使用私人浏览等,这很容易被打败。是的,这是我公司的内部登记表,用于志愿者活动,所以我认为人们不会试图击败检查。这只是一个简单的提醒,提醒人们,如果他们可能试图意外地重新注册,可以改为if($.cookie($.cookie('client\u email\u cookie')!==email){$.cookie(“client\u email\u cookie”),email,{path:'/',expires:10};
使用客户端IP是否更适合cookie?@Growler您仍然需要服务器端代码(或者能够从另一个站点异步加载服务器端页面)来完成此操作。使用输入的电子邮件地址是更简单的选项。“我使用客户端cookie来确保每个人(每个唯一的电子邮件)只进行一次注册”–这其中的联系在哪里?我可以在多个客户端上使用相同的电子邮件地址,每个客户端都会收到一个cookie…因此没有任何“保证”可言(除了当一个网站说“不,你已经这么做了”时,最懂技术的用户不再需要考虑删除cookie这一事实)@CBroe我知道。请看下面我的评论。也许通过IP检查更好?我会按照您的方式使用cookies。从您的描述来看,阻止人们通过检查失败似乎不是一个真正的问题。@ElGavilan嗯,我更喜欢使用服务器和验证码、会话等。但我不能。