Heim  >  Artikel  >  Backend-Entwicklung  >  Wie führen große Hersteller Online-Abstimmungen durch?

Wie führen große Hersteller Online-Abstimmungen durch?

醉折花枝作酒筹
醉折花枝作酒筹nach vorne
2021-07-14 16:46:271381Durchsuche

Im Internet sehen wir oft verschiedene Arten von Abstimmungen. Heute werfen wir einen Blick auf die Online-Abstimmungen großer Hersteller.

Wie führen große Hersteller Online-Abstimmungen durch?

Ich habe heute Youku gesehen und zufällig einen tollen Kerl von Youku gesehen – ich bin ein legendärer Online-Wähler. Ich bin sehr neugierig, wie diese großen und großartigen Unternehmen Online-Abstimmungen durchführen führt Online-Abstimmungen durch.

Text:

Youku Talent – ​​Ich bin eine Legende Online-Abstimmungsseite: http://c.youku.com/niuren

Wählen Sie zufällig einen Spieler aus, und eine schwebende Wiedergabeebene mit einer Abstimmungsschaltfläche wird angezeigt Nachdem Sie oben geklickt haben, stimmen Sie erneut ab. Zur Erinnerung: Sie haben bereits abgestimmt. Bitte stimmen Sie nach einer Stunde erneut ab. -----Es scheint, dass diese Abstimmung normal ist, aber das sind oberflächliche Phänomene.

Wie führen große Hersteller Online-Abstimmungen durch?Mit Firebug können wir feststellen, dass jede Abstimmung eine http-Anfrage auslöst

Wir können diesen http-Link setzen:

http://minisite.youku.com/pub2/i_am_legend/vote.php? Kann ich meine Stimmen einfach swipen? ?

Mit Neugier öffnete ich die Seite und fand die Stimmenzahl dieses Teilnehmers:

Wie führen große Hersteller Online-Abstimmungen durch?Mein erster Gedanke war, dass dies der Abstimmung, die ich normalerweise mache, sehr ähnlich sei, also suchte ich schnell nach der Ajax-Anfragedatei auf der Listenseite;

Tatsächlich habe ich Folgendes gefunden:

http://minisite.youku.com/pub2/i_am_legend/getvote.php?page=1&callback=cc&count=8&i=0.42276474971249034Wie führen große Hersteller Online-Abstimmungen durch?

Das ist ein sehr typische getjson-Methode, die in jquery zurückgegeben wird Die Daten

(Ich verwende das jquery-Framework, Youku verwendet nicht das jq-Framework, aber es stellt sich heraus, dass es ähnlich ist), ich habe einen anderen Quellcode für diese Anfrage gefunden:

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(&#39;"+oList[i].videoid+"&#39;,&#39;"+oList[i].title+"&#39;);\" 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(&#39;"+oList[i].videoid+"&#39;,&#39;"+oList[i].title+"&#39;);\" 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(&#39;"+oList[i].videoid+"&#39;,&#39;"+oList[i].title+"&#39;);\"></span></li>\n";
        html += "</ul>\n";
      }
      html += "<p class=\"clear\"></p>";
      //alert(html);
      document.getElementById(&#39;videosTpList&#39;).innerHTML = html;

      if(t){
        //显示分页
        max_cnt = pz;
        var js_pager = new jsPager();
        js_pager.init(total, pz, pg, "vTpPager");
        document.getElementById(&#39;videosTpPager&#39;).style.display = "";
        document.getElementById(&#39;videosTpPager&#39;).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());
}

Schauen wir uns das an bei Youkus Methode, häufige Abstimmungen einzuschränken: Wie führen große Hersteller Online-Abstimmungen durch?

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;
  }
}

Es ​​stellte sich heraus, dass das Schreiben von Cookies auf der Clientseite zur Beurteilung ein wenig Betrug ist. In der Vergangenheit haben wir bei der Online-Abstimmung oft Stimmen erhalten, aber schließlich haben wir verwendeten die serverseitige Verifizierung und zeichneten die IP auf, um sie einzuschränken. Die Abstimmung von Youku basiert jedoch vollständig auf der clientseitigen Verifizierung.

Um die Abstimmung von Youku zusammenzufassen:

Die Daten auf der Listenseite werden in Echtzeit angezeigt, das heißt, sie werden sofort nach der Abstimmung angezeigt. Unsere Abstimmung wurde damals auch in Echtzeit angezeigt, aber der Serverdruck war zu groß Je mehr Stimmen gelöscht wurden, desto häufiger wurde die Datenbank eingefügt und gelesen, wodurch die Daten stark belastet wurden. Später wurde ein Caching-Mechanismus verwendet, um dieses Problem zu lösen, und die Daten wurden angezeigt nach einer Minute.

Es gibt ein Problem beim Schreiben dieser Abstimmungs-API-Datei. Ich habe http://minisite.youku.com/pub2/i_am_legend/vote.php?id=XMjc1NzExMzE2&callback=c&i=0.19621988418141467 in den Browser eingefügt und die Aktualisierung fortgesetzt Es ist offensichtlich, dass Youku-Programmierer den Pfad der Übermittlungsseite, die Übermittlungsmethode usw. bestimmen müssen Also, diese Abstimmung ist auch einfach. Geben Sie diese URL einfach in eine andere F5 des Browsers ein. Wenn es nicht funktioniert, können Sie einfach ein js schreiben, um die Seite regelmäßig zu aktualisieren.
  • Der Mechanismus zur Verhinderung von Ticketbetrug besteht definitiv darin, Kunden-Cookies zur Verifizierung zu verwenden. Dies ist ein bisschen ein Anfängerverfahren. Die häufigste Methode ist die Verifizierung anhand der IP (obwohl diese Methode auch bei professionellen Ticketbetrugsunternehmen ein Kinderspiel ist). , aber es ist immer noch für Laien geeignet) Genug, um häufiges Ticketklauen zu verhindern.
  • Zusammenfassung:
  • Ich dachte, die Technologie großer Unternehmen sei ausgereifter als unsere. Es scheint, dass wir nicht blind besessen sein sollten und an deine Talente zu glauben ist der Schlüssel!

    Empfohlenes Lernen:
  • php-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWie führen große Hersteller Online-Abstimmungen durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen