Opsætningssti: Dashboard → Rediger server → Vote Rewards (og Minecraft-detaljer for Votifier).
01
Sådan virker det
1
Spilleren åbner dit stemmelink, helst med ?p=USERNAME, så formularen er udfyldt.
2
De sender stemmen. Vi håndhæver 24-timers cooldown pr. IP (og pr. indlogget konto). Hvis rewards er konfigureret, er brugernavn / parameter påkrævet.
3
Vi underretter dine reward-systemer: HTTP GET til din postback-URL og/eller en Votifier-pakke til din Minecraft-host — med samme parameter og stemmerens IP.
4
Du giver belønningen. Leveringsfejl på din side logges her, men fjerner ikke stemmen.
Vælg en metode
HTTP Postback
Bedst til hjemmesider, launchers og ikke-Minecraft-spil. For Minecraft er det et valgfrit alternativ til Votifier (eller et supplement, hvis du også belønner på en hjemmeside).
Til Minecraft: brug Votifier først. HTTP-postback er valgfrit (eller ekstra). Hver aktiveret kanal kører uafhængigt efter stemmen.
Hurtig start
1Log ind og åbn Dashboard.
2Rediger din godkendte serverlisting.
3Sæt en Postback-URL og/eller aktivér Votifier under Minecraft-detaljer.
4Kopiér incentive voting-linket fra redigeringsformularen (ender med ?p=USERNAME).
5Læg linket på din hjemmeside eller Discord; erstat USERNAME pr. spiller.
6Afgiv en teststemme, og bekræft at rewards kommer frem.
02
Postback PHP
Efter en vellykket stemme kalder vi din URL med spillerparameteren og deres IP. Dit script markerer kontoen som havende stemt og giver points eller items.
Whitelist denne hjemmesides offentlige udgående IP i din firewall og postback-script. Afvis alle andre kilder. Foretræk HTTPS.
1. Sæt din Postback-URL
Dashboard → Rediger server → Vote Rewards → Postback-URL.
https://YOURDOMAIN/postback.php
Filnavnet er valgfrit — brug den sti, din stack foretrækker.
Kun offentlige http/https-URL'er accepteres. Localhost, private LAN-IP'er og URL-credentials afvises (SSRF-beskyttelse).
Vi følger et lille antal redirects og timer ud efter et par sekunder, så afstemningen forbliver hurtig.
2. Byg incentive voting-links
Tilføj en parameter, så hver spiller identificeres, når de lander på stemmesiden.
/GAME/server/SLUG/vote?p=PARAMETER
Del
Regler
PARAMETER / p_resp
Kun bogstaver, tal, _, - · max 32 tegn · brugernavn, konto-id eller andet id, du tracker
ip
Stemmerens IPv4 eller IPv6 som denne liste ser den (proxy-aware når aktiveret)
Prefill-query
?p= eller ?username=
3. Hvad vi kalder efter en stemme
Kun ved succes. Hvis spilleren ikke gennemførte en gyldig stemme, sender vi ingen request.
Når vi rammer din postback med p_resp=Razor, har spilleren Razor stemt. ip-værdien er den adresse, de brugte på denne liste.
Hvad dit script bør gøre
Verificér, at requesten kommer fra denne listes offentlige IP.
Rens p_resp og ip (stol aldrig på rå input).
Bekræft, at kontoen / karakteren findes i din database.
Anvend din egen reward-cooldown, hvis du har brug for noget strengere end 24 timer.
Giv points, coins eller items; log eventet; returnér HTTP 200.
postback.php-eksempel
Host dette på din reward-side, ikke nødvendigvis på denne stemmeliste. Sæt VOTE_LIST_IP til denne hjemmesides udgående offentlige IP, før du går live.
<?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
Vi kan sende stemmen direkte ind i din Minecraft-server. Et listener-plugin kører derefter dine reward-kommandoer.
Firewall: tillad inbound TCP fra denne hjemmesides offentlige IP til din Votifier-port (standard 8192). Eksponér ikke porten til hele internettet, hvis du kan undgå det.
1
Spilleren indtaster sit Minecraft-brugernavn på vores stemmeside (eller kommer via ?p=Steve).
2
Stemmen lykkes på denne liste.
3
Vi forbinder til din Votifier-host/port og leverer vote-pakken.
4
Din listener giver crates, keys, penge osv.
Aktivér Votifier under Minecraft-detaljer, vælg NuVotifier v2 eller Classic, og angiv derefter host, port og token eller RSA public key.
Installér NuVotifier (classic RSA og protokol v2) eller classic Votifier, plus en listener til din Minecraft-version (GAListener, SuperbVote eller en custom listener).
Classic / v1: indsæt hele public.key-filen. Host og port kommer fra config.yml. Behold debug: true, mens du kobler denne liste, og slå det derefter fra.
host: YOUR_PUBLIC_IP
port: 8192
debug: true
Pakker identificerer denne liste som: JoinGameServers
04
NuVotifier v2
Protokol v2 erstatter RSA med et delt token og en engangs-challenge. Map et token til denne listes service name, eller brug default-token.
Greeting har ingen challenge — brug Classic, eller opgrader NuVotifier og aktivér v2.
Ugyldig signatur / ukendt service
Forkert token, eller service name er ikke mappet. Tilføj listens service name eller brug default.
Forbindelse mislykkedes / timeout
Forkert host/port, Votifier offline, eller firewall blokerer denne listes IP.
Intet svar
Proxy/plugin-interferens; aktivér NuVotifier-debug, og prøv igen.
05
Testtjekliste
Gem listing-indstillinger uden valideringsfejl.
Åbn et incentive-link — brugernavnsfeltet skal udfyldes fra ?p=.
Afgiv én stemme. Du skal se success-tilstanden. En anden stemme inden for 24 timer skal blokeres.
Verificér postback: aktivér DEBUG i din receiver; bekræft at p_resp og ip ankommer.
Verificér Votifier: med debug true bør Minecraft-konsollen vise en indkommende stemme for dit brugernavn og denne listes service name.
Bekræft reward in-game eller på siden. Hvis ikke: ret listeneren — listens stemme tæller stadig.
Leveringsforsøg logges i vote_reward_logs (ok / fail / skipped). En mislykket callback ruller aldrig stemmen tilbage på denne liste.
06
FAQ & fejlfinding
Nej. Gæster kan stemme. Indloggede konti deler de samme 24-timers cooldown-regler mod misbrug.
Hvis du har konfigureret en postback-URL eller Votifier, har vi brug for en parameter til at fortælle dig, hvem der skal belønnes. Uden rewards konfigureret er brugernavn valgfrit.
Ja. Begge kører efter en vellykket stemme. Fejl er uafhængige af hinanden.
Den skal være en offentlig http(s)-URL. Localhost, .local, private IP'er (fx 10.*, 192.168.*) og URL'er med indlejrede credentials blokeres.
Bekræft, at stemmen lykkedes på denne liste. Tjek dine postback-logs eller NuVotifier-debug. Verificér firewall-allowlists, og at brugernavnet matcher en in-game-konto. Listens cooldown er 24 timer; din egen reward-cooldown kan være anderledes.
Kun A–Z, a–z, 0–9, _ og -. Alt andet strippes. Hold parametre ≤ 32 tegn.
Installer appTilføj JoinGameServers til din startskærm for hurtig adgang.