インターネット上では、さまざまな投票が行われていますが、今回は大手メーカーのオンライン投票を紹介しますので、困っている友人はぜひ参考にしてみてください。
今日 Youku を見ていて、たまたま Youku で素晴らしい人物を見つけました - 私は伝説的なオンライン投票者です。これらの大きくて素晴らしい企業がどのように活動しているのか非常に興味がありますYoukuではどのようにオンライン投票を行っているのでしょうか?
Youku Talent -- I am a legend オンライン投票ページ: http://c.youku.com/niuren
ランダムにプレーヤーを選択すると、あなたは再生のフローティング レイヤーが上の投票ボタンとともに表示されます。投票をクリックすると、
が再度投票します。念のため、すでに投票していますので、1 時間後にもう一度投票してください。 -----この投票は正常であるように見えますが、これらは表面的な現象です。
firebug を使用すると、投票ごとに http リクエストがトリガーされることがわかります。
次の http リンクを配置できます:
http: //minisite.youku.com/pub2/i_am_legend/vote.php?id=XMjc1NzExMzE2&callback=c&i=0.19621988418141467
私の第一印象は、これは getjson メソッドを使用して行われた投票であるということです。これをブラウザーに入れます。を数回更新した後、データが
、、689 票増加していることがわかりました。これは投票をスワイプする方法ですか? ?
好奇心を持ってページを開いて、この出場者の投票数を見つけました:
第一印象は、これは私の通常の投票とは大きく異なるということでした。同様に、リスト ページで ajax リクエスト ファイルをすぐに探します。
案の定、見つけました:
http://minisite.youku.com/pub2/i_am_legend/getvote。 php?page=1&callback= cc&count=8&i=0.42276474971249034
これは、jquery の getjson メソッドによって返される非常に一般的なデータです。
(私は jquery を使用しています)フレームワーク、Youku は jq フレームワークを使用していませんが、似ていることがわかりました)、このリクエストの別のソース コードを見つけました:
function vTpListGet(pg, pz, t){ pg = (pg || 1); pz = (pz || 8); t = (t || false); cc = function(oList, total){ if(oList.length > 0){ var html = ""; for(var i=0;i < oList.length;i++){ html += "<ul class=\"x\">\n"; html += " <li class=\"x_thumb\"><a href=\"javascript:;\" onclick=\"vTpSet('"+oList[i].videoid+"','"+oList[i].title+"');\" title=\""+oList[i].title+"\"><img src=\""+oList[i].thumburl+"\" alt=\""+oList[i].title+"\" /></a></li>\n"; html += " <li class=\"x_title\"><a href=\"javascript:;\" onclick=\"vTpSet('"+oList[i].videoid+"','"+oList[i].title+"');\" title=\""+oList[i].title+"\">"+oList[i].title+"</a></li>\n"; html += " <li class=\"x_data\">票数:<span class=\"num\">"+oList[i].total+"</span></li>\n"; html += " <li class=\"x_btn\"><span class=\"btn\" onclick=\"vTpSet('"+oList[i].videoid+"','"+oList[i].title+"');\"></span></li>\n"; html += "</ul>\n"; } html += "<p class=\"clear\"></p>"; //alert(html); document.getElementById('videosTpList').innerHTML = html; if(t){ //显示分页 max_cnt = pz; var js_pager = new jsPager(); js_pager.init(total, pz, pg, "vTpPager"); document.getElementById('videosTpPager').style.display = ""; document.getElementById('videosTpPager').innerHTML = js_pager.getHtml(); } } }; js_request("http://minisite.youku.com/pub2/i_am_legend/getvote.php?page="+pg+"&callback=cc&count="+pz+"&i=" + Math.random()); }
Youku の頻繁な投票を制限する方法を見てみましょう:
function vTp(vid){ c = function(num,vid){ alert("投票成功,目前票数为:"+num+"票!"); var exp = new Date (); exp.setTime(exp.getTime() + 3600000); setCookie("nrtp", "true", exp); } if(getCookie("nrtp") != "true"){ js_request("http://minisite.youku.com/pub2/i_am_legend/vote.php?id="+vid+"&callback=c&i=" + Math.random()); }else{ alert("一小时内只能投票一次!"); return false; } }
実際にクライアント側で Cookie を書き込む 判断すると、ちょっと騙されたような気がしてなりません 以前はオンライン投票をするときにスワイプ投票がよくありましたが、結局のところ、サーバー側の検証と IP の記録を使用していますただし、Youku の投票は完全にクライアント側の検証に基づいています。
リスト ページのデータはリアルタイムで表示されます。つまり、投票直後に表示されます ---- その年の投票もリアルタイムで表示されていましたが、サーバーへの負荷が大きく、チケットのブラッシングの際に頻繁にデータベースの挿入や読み込みが行われるため、データに大きな負荷がかかり、データベースサーバーがダウンすることがよくありました。その後、キャッシュ メカニズムを使用してこの問題を解決し、データは 1 分後に表示されるようになりました。
投票 API ファイルに問題があるため、http://minisite.youku.com/pub2/i_am_legend/vote.php?id=XMjc1NzExMzE2&callback=c&i=0.19621988418141467 を入力しました。ブラウザーを常に更新すると、実際に投票数が増加する可能性があります。明らかに Youku プログラマは怠け者です。ページが通常の投票リクエストからのものであるかどうかを判断するには、少なくともページの送信パスと方法を決定する必要があります。この場合、この投票は投票をスワイプするのが簡単すぎます。ブラウザの別の F5 キーにこの URL を入力するだけです。うまくいかない場合は、定期的にページを更新するための js を記述するだけです。
チケット詐欺を防ぐメカニズムは、検証にクライアント Cookie を使用することです。これは少し初心者です。最も一般的な方法は、IP に基づいて検証することです (ただし、この方法は頻繁なチケット詐欺を防ぐために、プロのチケット詐欺会社でも使用されています。小児科ですが、専門家以外の人々に対処するのに十分です。
少し残念です。大企業の技術は当社よりも成熟していると思っていました。少し過大評価されているようです。大企業に盲目的に執着したり崇拝したりするのではなく、自分らしく、自分を信じることが鍵です。
推奨学習: php ビデオ チュートリアル
以上が大手メーカーはどのようにしてネット投票を行っているのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。