Pelaaja avaa äänestyslinkkisi, mieluiten ?p=USERNAME, jotta lomake on valmiiksi täytetty.
2
Hän lähettää äänen. Pakotamme 24 tunnin cooldownin per IP (ja per kirjautunut tili). Jos rewardit on määritetty, käyttäjänimi / parametri on pakollinen.
3
Ilmoitamme reward-järjestelmillesi: HTTP GET postback-URL:iisi ja/tai Votifier-paketti Minecraft-hostillesi — samalla parametrilla ja äänestäjän IP:llä.
4
Annat rewardin. Toimitusvirheet sinun puolellasi lokitetaan tänne, mutta eivät poista ääntä.
Valitse tapa
HTTP Postback
Paras sivustoille, launchereille ja muille kuin Minecraft-peleille. Minecraftissa tämä on valinnainen vaihtoehto Votifierille (tai lisä, jos palkitset myös sivustolla).
5Laita linkki sivustollesi tai Discordiin; korvaa USERNAME pelaajakohtaisesti.
6Anna testiääni ja varmista, että rewardit saapuvat.
02
Postback PHP
Onnistuneen äänen jälkeen kutsumme URL:iasi pelaajaparametrilla ja heidän IP:llään. Skriptisi merkitsee tilin äänestäneeksi ja myöntää pisteitä tai esineitä.
Whitelistaa tämän sivuston julkinen outbound-IP firewallissa ja postback-skriptissäsi. Hylkää kaikki muut lähteet. Suosi HTTPS:ää.
Kun kutsumme postbackiasi p_resp=Razor, pelaaja Razor on äänestänyt. ip-arvo on osoite, jota hän käytti tällä listalla.
Mitä skriptisi pitäisi tehdä
Varmista, että pyyntö tulee tämän listan julkisesta IP:stä.
Siivoa p_resp ja ip (älä koskaan luota raakaan syötteeseen).
Vahvista, että tili / hahmo on olemassa tietokannassasi.
Käytä omaa reward-cooldownia, jos tarvitset tiukempaa kuin 24 tuntia.
Myönnä pisteitä, kolikoita tai esineitä; lokita tapahtuma; palauta HTTP 200.
postback.php-esimerkki
Hostaa tämä reward-sivustollasi, ei välttämättä tällä äänestyslistalla. Aseta VOTE_LIST_IP tämän sivuston outbound-julkiseksi IP:ksi ennen tuotantoon menoa.
<?php
/**
* Example vote postback receiver for YOUR game website / CMS.
*
* Configure this URL on your listing under Dashboard → Edit server → Vote Rewards.
* This list will call it ONLY after a successful vote:
*
* https://yoursite.com/postback.php?p_resp=PARAMETER&ip=USERIP
*
* PARAMETER is the username / account id the player entered on the vote form
* (or the value from ?p= on your incentive voting link).
*
* Docs: /voting-check
*/
define('DEBUG', 0); // set to 1 to write _postback.log
define('LOG_FILE', __DIR__ . '/_postback.log');
/**
* Only accept callbacks from the vote list's public IP.
* Leave empty to skip the allowlist (not recommended in production).
*
* Example: define('VOTE_LIST_IP', '203.0.113.10');
*/
define('VOTE_LIST_IP', '');
$ipRequest = $_SERVER['HTTP_CF_CONNECTING_IP']
?? (isset($_SERVER['HTTP_X_FORWARDED_FOR'])
? trim(explode(',', (string) $_SERVER['HTTP_X_FORWARDED_FOR'])[0])
: null)
?? $_SERVER['REMOTE_ADDR']
?? '';
$ipRequest = trim((string) $ipRequest);
if (VOTE_LIST_IP !== '' && $ipRequest !== VOTE_LIST_IP) {
if (DEBUG) {
error_log(date('[Y-m-d H:i] ') . "[Invalid] Request from {$ipRequest}" . PHP_EOL, 3, LOG_FILE);
}
http_response_code(403);
exit('Forbidden');
}
if (DEBUG) {
error_log(date('[Y-m-d H:i] ') . "[OK] Valid callback: {$ipRequest}" . PHP_EOL, 3, LOG_FILE);
}
// Clean parameters from the vote list (letters, numbers, underscore, hyphen).
$p = preg_replace('/[^A-Za-z0-9_\-]+/', '', (string) ($_GET['p_resp'] ?? '')) ?? '';
$userIp = preg_replace('/[^0-9a-fA-F:\.]+/', '', (string) ($_GET['ip'] ?? '')) ?? '';
if ($p === '') {
http_response_code(400);
exit('Missing p_resp');
}
if (DEBUG) {
error_log(date('[Y-m-d H:i] ') . "[GET] Parameters [p_resp]={$p} [ip]={$userIp}" . PHP_EOL, 3, LOG_FILE);
}
// ---------------------------------------------------------------------------
// Connect to your database, verify account $p exists, enforce your own
// cooldown if needed, then grant vote points / items to $p (voted from $userIp).
// We send p_resp + ip ONLY when that player successfully voted on the list.
// ---------------------------------------------------------------------------
http_response_code(200);
echo 'OK';
03
Minecraft Votifier
Voimme työntää äänen suoraan Minecraft-serverillesi. Listener-plugin ajaa sitten reward-komennot.
Firewall: salli inbound TCP tämän sivuston julkisesta IP:stä Votifier-porttiisi (oletus 8192). Älä altista porttia koko internetille, jos voit välttää sen.
1
Pelaaja syöttää Minecraft-käyttäjänimensä äänestyssivullamme (tai saapuu ?p=Steve).
2
Ääni onnistuu tällä listalla.
3
Yhdistämme Votifier-hostiisi/porttiisi ja toimitamme äänipaketin.
4
Listenerisi myöntää crateja, keytä, rahaa jne.
Ota Votifier käyttöön Minecraft-tiedot -osiossa, valitse NuVotifier v2 tai Classic, ja syötä host, portti sekä token tai RSA-julkinen avain.
Asenna NuVotifier (classic RSA ja protokolla v2) tai classic Votifier, plus listener Minecraft-versiollesi (GAListener, SuperbVote tai custom listener).
Classic / v1: liitä koko public.key-tiedosto. Host ja portti tulevat config.yml:stä. Pidä debug: true kun yhdistät tätä listaa, sammuta sitten.
host: YOUR_PUBLIC_IP
port: 8192
debug: true
Paketit tunnistavat tämän listan nimellä: JoinGameServers
04
NuVotifier v2
Protokolla v2 korvaa RSA:n jaetulla tokenilla ja kertaluonteisella challengeilla. Kartota token tämän listan service-nimeen tai käytä oletustokenia.
Tervehdyksessä ei ole challengea — käytä Classicia tai päivitä NuVotifier ja ota v2 käyttöön.
Virheellinen signature / tuntematon service
Väärä token tai service-nimeä ei ole kartotettu. Lisää listan service-nimi tai käytä oletusta.
Yhteys epäonnistui / timeout
Huono host/portti, Votifier offline tai firewall estää tämän listan IP:n.
Ei vastausta
Proxy/plugin-häiriö; ota NuVotifier-debug käyttöön ja yritä uudelleen.
05
Testauslista
Tallenna listauksen asetukset ilman validointivirheitä.
Avaa kannustinlinkki — käyttäjänimikentän pitäisi esitäyttyä ?p=-parametrista.
Anna yksi ääni. Näet onnistumistilanteen. Toisen äänen 24 tunnin sisällä on estyttävä.
Varmista postback: ota DEBUG käyttöön vastaanottimessasi; varmista että p_resp ja ip saapuvat.
Varmista Votifier: debug true -tilassa Minecraft-konsolin pitäisi näyttää saapuva ääni käyttäjänimellesi ja tämän listan service-nimelle.
Vahvista pelinsisäinen tai sivuston reward. Jos ei, korjaa listener — listan ääni lasketaan silti.
Toimitusyritykset kirjataan tauluun vote_reward_logs (ok / fail / skipped). Epäonnistunut callback ei koskaan peruuta ääntä tältä listalta.
06
UKK & vianetsintä
Ei. Vierailijat voivat äänestää. Kirjautuneet tilit jakavat samat 24 tunnin cooldown-säännöt väärinkäytön estämiseksi.
Jos määritit postback-URL:n tai Votifierin, tarvitsemme parametrin kertoaksemme kenelle reward kuuluu. Ilman rewardeja käyttäjänimi pysyy valinnaisena.
Kyllä. Molemmat ajetaan onnistuneen äänen jälkeen. Virheet ovat itsenäisiä.
Sen on oltava julkinen http(s)-URL. Localhost, .local, yksityiset IP:t (esim. 10.*, 192.168.*) ja URL:t sisäänrakennetuilla tunnuksilla on estetty.
Varmista, että ääni onnistui tällä listalla. Tarkista postback-lokisi tai NuVotifier-debug. Varmista firewall-allowlistit ja että käyttäjänimi vastaa pelinsisäistä tiliä. Listan cooldown on 24 tuntia; oma reward-cooldown voi erota.
Vain A–Z, a–z, 0–9, _ ja -. Muut merkit poistetaan. Pidä parametrit ≤ 32 merkkiä.
Asenna sovellusLisää JoinGameServers aloitusnäyttöön nopeaa käyttöä varten.