Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 设置客户端cookie以防止重新注册_Javascript_Jquery_Cookies - Fatal编程技术网

Javascript 设置客户端cookie以防止重新注册

Javascript 设置客户端cookie以防止重新注册,javascript,jquery,cookies,Javascript,Jquery,Cookies,我没有运行服务器端代码的权限,因此无法为注册表执行PHP会话。我将使用客户端cookie,以确保每个人(每个唯一的电子邮件)只注册一次 接下来我想我掌握了窍门 但看起来,即使我输入了一封新的电子邮件,它也总是会返回警报(“您已经注册”)。为什么呢 $("#submitBtn").click(function (event) { var subject = "Registration for Walk-a-thon", nam

我没有运行服务器端代码的权限,因此无法为注册表执行PHP会话。我将使用客户端cookie,以确保每个人(每个唯一的电子邮件)只注册一次

接下来我想我掌握了窍门

但看起来,即使我输入了一封新的电子邮件,它也总是会返回
警报(“您已经注册”)。为什么呢

        $("#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嗯,我更喜欢使用服务器和验证码、会话等。但我不能。