Setup-väg: Dashboard → Redigera server → Vote Rewards (och Minecraft-detaljer för Votifier).
01
Så funkar det
1
Spelaren öppnar din röstlänk, helst med ?p=USERNAME så att formuläret är ifyllt.
2
De skickar in rösten. Vi kör 24-timmars cooldown per IP (och per inloggat konto). Om rewards är konfigurerade krävs användarnamn / parameter.
3
Vi meddelar dina reward-system: HTTP GET till din postback-URL och/eller ett Votifier-paket till din Minecraft-host — med samma parameter och väljarens IP.
4
Du ger belöningen. Leveransfel på din sida loggas här men tar inte bort rösten.
Välj en metod
HTTP Postback
Bäst för webbplatser, launchers och icke-Minecraft-spel. För Minecraft är det ett valfritt alternativ till Votifier (eller ett komplement om du också belönar på en webbplats).
När vi träffar din postback med p_resp=Razor har spelaren Razor röstat. ip-värdet är adressen de använde på den här listan.
Vad ditt script bör göra
Verifiera att requesten kommer från den här listans publika IP.
Sanera p_resp och ip (lita aldrig på rå input).
Bekräfta att kontot / karaktären finns i din databas.
Använd din egen reward-cooldown om du behöver något striktare än 24 timmar.
Ge poäng, coins eller items; logga eventet; returnera HTTP 200.
postback.php-exempel
Hosta det här på din reward-sajt, inte nödvändigtvis på den här röstlistan. Sätt VOTE_LIST_IP till den här webbplatsens utgående publika IP innan 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 skicka rösten rakt in i din Minecraft-server. Ett listener-plugin kör sedan dina reward-kommandon.
Firewall: tillåt inbound TCP från den här webbplatsens publika IP till din Votifier-port (standard 8192). Exponera inte porten mot hela internet om du kan undvika det.
1
Spelaren anger sitt Minecraft-användarnamn på vår röstsida (eller kommer via ?p=Steve).
2
Rösten lyckas på den här listan.
3
Vi ansluter till din Votifier-host/port och levererar vote-paketet.
4
Din listener ger crates, keys, pengar osv.
Aktivera Votifier under Minecraft-detaljer, välj NuVotifier v2 eller Classic, och ange sedan host, port och token eller RSA public key.
Installera NuVotifier (classic RSA och protokoll v2) eller classic Votifier, plus en listener för din Minecraft-version (GAListener, SuperbVote eller en custom listener).
Classic / v1: klistra in hela public.key-filen. Host och port kommer från config.yml. Behåll debug: true medan du kopplar den här listan, stäng sedan av det.
host: YOUR_PUBLIC_IP
port: 8192
debug: true
Paket identifierar den här listan som: JoinGameServers
04
NuVotifier v2
Protokoll v2 byter RSA mot en delad token och en engångs-challenge. Mappa en token till den här listans service name, eller använd default-token.
Greetingen har ingen challenge — använd Classic, eller uppgradera NuVotifier och aktivera v2.
Ogiltig signatur / okänd service
Fel token, eller service name inte mappad. Lägg till listans service name eller använd default.
Anslutning misslyckades / timeout
Fel host/port, Votifier offline, eller firewall blockerar den här listans IP.
Inget svar
Proxy/plugin-interferens; aktivera NuVotifier-debug och försök igen.
05
Testchecklista
Spara listing-inställningar utan valideringsfel.
Öppna en incentive-länk — användarnamnsfältet ska fyllas i från ?p=.
Lägg en röst. Du ska se success-läget. En andra röst inom 24 timmar måste blockeras.
Verifiera postback: aktivera DEBUG i din mottagare; bekräfta att p_resp och ip kommer fram.
Verifiera Votifier: med debug true ska Minecraft-konsolen visa en inkommande röst för ditt användarnamn och den här listans service name.
Bekräfta reward in-game eller på sajten. Om inte: fixa listenern — listans röst räknas ändå.
Leveransförsök loggas i vote_reward_logs (ok / fail / skipped). En misslyckad callback rullar aldrig tillbaka rösten på den här listan.
06
FAQ & felsökning
Nej. Gäster kan rösta. Inloggade konton delar samma 24-timmars cooldown-regler mot missbruk.
Om du konfigurerat en postback-URL eller Votifier behöver vi en parameter för att säga vem som ska belönas. Utan rewards konfigurerade är användarnamn valfritt.
Ja. Båda körs efter en lyckad röst. Fel är oberoende av varandra.
Den måste vara en publik http(s)-URL. Localhost, .local, privata IP:n (t.ex. 10.*, 192.168.*) och URL:er med inbäddade credentials blockeras.
Bekräfta att rösten lyckades på den här listan. Kolla dina postback-loggar eller NuVotifier-debug. Verifiera firewall-allowlists och att användarnamnet matchar ett in-game-konto. Listans cooldown är 24 timmar; din egen reward-cooldown kan skilja sig.
Bara A–Z, a–z, 0–9, _ och -. Allt annat strippas. Håll parametrar ≤ 32 tecken.
Installera appenLägg till JoinGameServers på din startskärm för snabb åtkomst.