ウェブ上のどこかで、ブログ記事の基本的な「好き」のスクリプトがあるサイトを見ました。PHP/JSでクッキーを使って投票を保存する方法
私はそれを複製しようとしています、私はちょっと混乱しています。ここではフロントエンドのために私が持っているコード
Javascriptが、ここで
.like-count .icon {
background-position: 0 -19px;
width: 13px;
height: 11px;
float: left;
margin: 4px 5px 0 0;
}
.like-count a:hover .icon,
.like-count a.active .icon { background-position: -15px -19px; }
.like-count,
.edit-post,
.comment-count {
float: right;
margin: 0 0 0 10px;
}
<li class="like-count">
<a href="#" class="likeThis active" id="like-356">
<span class="count"><span class="icon"></span>
<span class="count">397</span></span>
</a>
</li>
は、私がこれまでに...
my_likeInit()収集したものですjqueryの
jQuery(document).ready(function() {
function my_reloadLikes(who) {
var text = jQuery("#" + who).html();
var patt= /(\d)+/;
var num = patt.exec(text);
num[0]++;
text = text.replace(patt,num[0]);
jQuery("#" + who).html('<span class="count">' + text + '</span>');
} //reloadLikes
function my_likeInit() {
jQuery(".likeThis").click(function() {
var classes = jQuery(this).attr("class");
classes = classes.split(" ");
if(classes[1] == "active") {
return false;
}
var classes = jQuery(this).addClass("active");
var id = jQuery(this).attr("id");
id = id.split("like-");
jQuery.ajax({
type: "POST",
url: "index.php",
data: "likepost=" + id[1],
success: my_reloadLikes("like-" + id[1])
});
return false;
});
}
my_likeInit();
});
HTMLを必要としています機能
- 「が表示されているか
- が接続アクティブ」クラス「スペースは、それがあるかどうかを確認するために をチェックしている」.likeThisの変数
- スプリット値にlikeThisクラスを保存します.likeThisクラスにイベントをクリックしてくださいそれか
- .activeが発見された場合、これはalreadない場合
- ため を気に入っ/投票されたとして、それは死ぬ、それは.likeThis
- に.activeクラスを追加し、それは、ID = like-を取得123number
- 「like-」部分を分割して数字「」を取得します。
- としてPHPスクリプトにID番号を送信する "のように、NUMBERHERE
を「AJAX要求から成功likepost = NUMBERHERE
- は、私が投票している項目を追跡するために良い方法はあります/各項目のクッキーの代わりに言っていますか?
- いくつかのサンプルPHPコードでクッキーをチェックするので、すでに投票されているアイテムに「アクティブ」クラスを追加することができます(クッキーを持っている場合に基づいて)
- WordPressのブログでは、 POSTをindex.php?likepost = 1234にするか、単に別のURIページに投稿して、DB接続を手動で行うのではなく、Wordpressのものを利用するのがいいですか?
私はこれを取得ネット/ XHRの下で、放火犯を実行し、
リクエストヘッダ
POST: likepost=811
//このケースでは、私はID 811 w3tc_referrer=http%3A%2F%2Ftest.testdomain.com%2F%3Ftheme%3Dtest; 795=795; 835=835; 832=832
に投票するためにクリックしたこれは、ある種のです私が投票したすべてのもののIDを保存するように見えるクッキーが設定されています。
レスポンスヘッダここで Set-Cookie 811=811; expires=Sat, 13-Jan-2807 11:04:20 GMT; path=/
私はidが決定的クッキーに保存されて見ることができます。私には、これはOWNのクッキーだと思われますが、それよりも上にあるとクッキーに複数の値が表示されるので、最後に追加されますか?私が上記で投票したそれらのIDはすべて同じページにありました。おそらく1ページあたり1つのCookie、うまくいけばサイトあたり1つだけです...
は、だから、私の知る限りだようですが、私は基本的に、コードを解剖してきたと私は完全に私の頭の外にされるバックエンドに今、上記のすべてを理解し、私は
を助ける必要がある場所[OK]ページが読み込まれたら、私はMySQLデータベースから同様の値を入力します。値を追加してこのスクリプトの値を取得するバックエンドを行う方法を知っています。クッキー部分は私がちょっと混乱している部分です。
私はちょうど別のテストをしましたが、今はスクリプトで別々のクッキーに保存されていますので、100個のアイテムに投票すればそのサイトのCookieは100個あります。
良い方法がありますか?クッキーは、既に投票しているかどうかを確認し、クッキーがクリアされるまで私が再び投票するのを防ぎます。これは、ユーザーがログインしないように、ワードプレスのブログに載っているので、クッキーやIPアドレスの他にたくさんのオプションはありません。
質問
========= クッキーの問題についての洞察をいただき、ありがとうございます。
#1に答えるために、シリアル化は複数のデータエントリを1つのエンティティに格納するのに最適な方法です。 http://api.jquery.com/serializeArray/。しかし、私はクッキーを使用してこれをしません - 彼らは簡単にユーザーが変更し、あなたのロジックをねじ込むことができます。 – nickb
あなたはどうやってお勧めしますか? DBに保管していますか? – JasonDavis
DBにvote/likesを格納することをお勧めします。これは論理的な方法です。ご存じのようにクッキーはクライアント側です。ユーザーが投票したかどうかは、DBから確認する必要があります。 – onatm