Percorso setup: Dashboard → Modifica server → Ricompense vote (e Dettagli Minecraft per Votifier).
01
Come funziona
1
Il giocatore apre il tuo link vote, idealmente con ?p=USERNAME così il form è precompilato.
2
Invia il voto. Applichiamo cooldown 24 ore per IP (e per account connesso). Se le ricompense sono configurate, username / parametro è obbligatorio.
3
Notifichiamo i sistemi di ricompensa: HTTP GET al tuo URL postback e/o pacchetto Votifier al tuo host Minecraft — con lo stesso parametro e IP del votante.
4
Tu assegni la ricompensa. Errori di delivery sul tuo side sono loggati qui ma non rimuovono il voto.
Scegli un metodo
HTTP Postback
Ideale per siti, launcher e giochi non-Minecraft. Per Minecraft è un'alternativa opzionale a Votifier (o un'aggiunta se ricompensi anche sul sito).
Per Minecraft, usa Votifier per primo. HTTP postback è opzionale (o aggiuntivo). Ogni canale attivo funziona in modo indipendente dopo il voto.
Avvio rapido
1Accedi e apri la Dashboard.
2Modifica la tua inserzione approvata.
3Imposta URL Postback e/o attiva Votifier sotto Dettagli Minecraft.
4Copia il link vote incentive dal form (finisce con ?p=USERNAME).
5Metti il link sul sito o Discord; sostituisci USERNAME per ogni giocatore.
6Fai un voto di test e verifica che arrivino le ricompense.
02
Postback PHP
Dopo un voto valido richiamiamo il tuo URL con il parametro del giocatore e il suo IP. Il tuo script segna l'account come votato e assegna punti o oggetti.
Inserisci l'IP pubblico outbound di questo sito nella firewall e nello script postback. Rifiuta altre sorgenti. Preferisci HTTPS.
1. Imposta URL Postback
Dashboard → Modifica server → Ricompense vote → URL Postback.
https://YOURDOMAIN/postback.php
Il nome file è libero — usa il path che preferisci.
Solo URL http/https pubblici. Localhost, IP LAN privati e URL con credenziali sono rifiutati (protezione SSRF).
Seguiamo un numero limitato di redirect e timeout in pochi secondi così il voto resta veloce.
2. Crea link vote incentive
Aggiungi un parametro così ogni giocatore è identificato quando arriva sulla pagina vote.
/GAME/server/SLUG/vote?p=PARAMETER
Elemento
Regole
PARAMETER / p_resp
Solo lettere, numeri, _, - · max 32 caratteri · username, id account o qualsiasi id che tracci
ip
IPv4 o IPv6 del votante come vista da questa lista (proxy-aware se attivo)
Query prefill
?p= oppure ?username=
3. Cosa chiamiamo dopo un voto
Solo in caso di successo. Se il giocatore non ha completato un voto valido, non inviamo richieste.
Quando chiamiamo il postback con p_resp=Razor, il giocatore Razor ha votato. Il valore ip è l'indirizzo usato su questa lista.
Cosa dovrebbe fare il tuo script
Verifica che la richiesta arrivi dall'IP pubblico di questa lista.
Sanitizza p_resp e ip (non fidarsi dell'input grezzo).
Conferma che account / character esiste nel database.
Applica il tuo cooldown ricompensa se serve qualcosa più stretto di 24 ore.
Assegna punti, monete o oggetti; logga l'evento; rispondi HTTP 200.
Esempio postback.php
Hosta questo sul sito delle ricompense, non necessariamente su questa lista vote. Imposta VOTE_LIST_IP all'IP pubblico outbound di questo sito prima del go-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
Possiamo inserire il voto direttamente nel tuo server Minecraft. Un plugin listener esegue i comandi di ricompensa.
Firewall: consenti TCP inbound dall'IP pubblico di questo sito al tuo port Votifier (default 8192). Non esporre il port a tutta internet se puoi evitarlo.
1
Il giocatore inserisce il suo username Minecraft sulla nostra pagina vote (o arriva via ?p=Steve).
2
Il voto ha successo su questa lista.
3
Ci connettiamo al tuo host/port Votifier e consegniamo il pacchetto vote.
4
Il tuo listener assegna crate, chiavi, soldi, ecc.
Attiva Votifier sotto Dettagli Minecraft, scegli NuVotifier v2 o Classic, poi inserisci host, port e token o chiave pubblica RSA.
Installa NuVotifier (classic RSA e protocol v2) o classic Votifier, più un listener per la tua versione Minecraft (GAListener, SuperbVote o listener custom).
Classic / v1: incolla l'intero file public.key. Host e port sono in config.yml. Tieni debug: true mentre colleghi questa lista, poi disattivalo.
host: YOUR_PUBLIC_IP
port: 8192
debug: true
I pacchetti identificano questa lista come: JoinGameServers
04
NuVotifier v2
Protocol v2 sostituisce RSA con un token condiviso e una challenge one-time. Mappa un token al service name di questa lista o usa il token default.
Il greeting non ha challenge — usa Classic o aggiorna NuVotifier e attiva v2.
Firma non valida / servizio sconosciuto
Token errato o service name non mappato. Aggiungi il service name della lista o usa default.
Connessione fallita / timeout
Host/port errato, Votifier offline o firewall che blocca l'IP di questa lista.
Nessuna risposta
Interferenza proxy/plugin; attiva debug NuVotifier e riprova.
05
Checklist test
Salva le impostazioni senza errori di validazione.
Apri un link incentive — il campo username deve precompilarsi da ?p=.
Fai un voto. Dovresti vedere lo stato di successo. Un secondo voto entro 24 ore deve essere bloccato.
Verifica postback: attiva DEBUG nel receiver; conferma che arrivano p_resp e ip.
Verifica Votifier: con debug true, la console Minecraft dovrebbe mostrare un voto incoming per il tuo username e il service name di questa lista.
Conferma la ricompensa in-game o sul sito. Se non arriva, correggi il listener — il voto sulla lista conta comunque.
I tentativi di delivery sono in vote_reward_logs (ok / fail / skipped). Un callback fallito non annulla il voto su questa lista.
06
FAQ e troubleshooting
No. I guest possono votare. Gli account connessi condividono le stesse regole cooldown 24 ore per prevenire abusi.
Se hai configurato postback URL o Votifier, serve un parametro per sapere chi ricompensare. Senza ricompense configurate, username resta opzionale.
Sì. Entrambi partono dopo un voto valido. Gli errori sono indipendenti.
Deve essere un URL http(s) pubblico. Localhost, .local, IP privati (es. 10.*, 192.168.*) e URL con credenziali sono bloccati.
Conferma che il voto ha successo su questa lista. Controlla log postback o output debug NuVotifier. Verifica allowlist firewall e che l'username corrisponda all'account in-game. Cooldown lista: 24 ore; il tuo cooldown ricompensa può essere diverso.
Solo A–Z, a–z, 0–9, _ e -. Tutto il resto viene rimosso. Parametri ≤ 32 caratteri.
Installa appAggiungi JoinGameServers alla schermata Home per un accesso rapido.