0

私は投票 Web サイトを開発しており、有権者に 1 回だけ投票してもらいたいと考えています。これは 3 段階のプロセスです。最初のページは投票したい人を選択するページで、2 番目のページはその人を確認するページ (投票を送信するための非表示のラジオ ボタン) で、3 番目のページはありがとうページです。1 ページ目と 2 ページ目の Cookie を確認し、3 ページ目に Cookie を書き込みたいと考えています。最初にサイトに移動してから 2 日で Cookie の有効期限が切れるようにします。すでに投票した人を cookie.htm (他のすべてと同じフォルダー内) にリダイレクトしたいのですが、どうすればよいですか?

4

3 に答える 3

0

既知のサイトからの電子メール アドレスのようなものに基づいて、誰かが電子メール アドレスを確認するという要件がおそらく最善の策だと思います。

于 2012-11-16T23:44:44.523 に答える
0

あなたの最善の策は、サインアッププロセスを用意し、ユーザーログインを強制して投票することだと思います. コメントで述べたように、サーバー側の魔法が必要です。

于 2012-11-16T23:44:56.903 に答える
0

Javascript を使用して Cookie を設定するには、document.cookieオブジェクトを の形式の文字列値に設定します[cookiename]=[cookievalue];expires=[expirydate]。この場合、Cookie、任意の Cookie を設定するだけでよいように思われるので、「done=true」などでよいでしょう。

// get today's date plus 2 days
var expiration = new Date();
expiration.setDate(expiration.getDate() + 2);

// add cookie "done=true" with expiration
document.cookie="done=true;expires=" + expiration.toUTCString();

Cookie が既に設定されているかどうかを確認するには、document.cookie再度使用します。これにより、すべての Cookie のセミコロン区切りのリストが返されます。あなたのものを見つけるためにそれをフィルタリングしてください:

var myCookie = document.cookie.split(';').filter(function(item) { 
    return item.split('=')[0] == 'done'; 
});

Cookie が設定されている場合は、単純なリダイレクトを行うことができます。

if (myCookie.length > 0) {
    window.location = "cookie.htm";
}

Cookie の詳細については、MDN を参照してください。


義務的な免責事項:明らかに-他の人が指摘したように-このアプローチを使用すると、ユーザーは必要に応じて不正行為を行うことができます. 誰も気にしないと思う場合でも、サーバーに「サニティ チェック」を追加し、X 回以上投票された IP アドレスをブロックするのが賢明かもしれません。

于 2012-11-17T10:25:29.730 に答える