Διαδρομή ρύθμισης: Πίνακας ελέγχου → Επεξεργασία server → Vote Rewards (και Λεπτομέρειες Minecraft για Votifier).
01
Πώς λειτουργεί
1
Ο παίκτης ανοίγει τον σύνδεσμο ψήφου σου, ιδανικά με ?p=USERNAME ώστε η φόρμα να είναι προ συμπληρωμένη.
2
Υποβάλλει την ψήφο. Εφαρμόζουμε cooldown 24 ωρών ανά IP (και ανά συνδεδεμένο λογαριασμό). Αν έχουν ρυθμιστεί rewards, απαιτείται το όνομα χρήστη / παράμετρος.
3
Ειδοποιούμε τα συστήματα rewards σου: HTTP GET στο postback URL σου και/ή πακέτο Votifier στο Minecraft host σου — με την ίδια παράμετρο και το IP του ψηφοφόρου.
4
Εσύ δίνεις το reward. Αποτυχίες παράδοσης από τη μεριά σου καταγράφονται εδώ αλλά δεν αφαιρούν την ψήφο.
Διάλεξε μέθοδο
HTTP Postback
Καλύτερο για ιστοσελίδες, launchers και παιχνίδια εκτός Minecraft. Για Minecraft είναι προαιρετική εναλλακτική του Votifier (ή επιπλέον αν ανταμείβεις και σε ιστοσελίδα).
Για Minecraft, χρησιμοποίησε πρώτα Votifier. Το HTTP postback είναι προαιρετικό (ή επιπλέον). Κάθε ενεργό κανάλι τρέχει ανεξάρτητα μετά την ψήφο.
Γρήγορη εκκίνηση
1Συνδέσου και άνοιξε τον Πίνακα ελέγχου.
2Επεξεργάσου την εγκεκριμένη καταχώρηση server σου.
3Όρισε Postback URL και/ή ενεργοποίησε Votifier στις Λεπτομέρειες Minecraft.
4Αντίγραψε το incentive voting link από τη φόρμα επεξεργασίας (τελειώνει με ?p=USERNAME).
5Βάλε αυτόν τον σύνδεσμο στην ιστοσελίδα ή το Discord σου· αντικατέστησε το USERNAME ανά παίκτη.
6Κάνε δοκιμαστική ψήφο και επιβεβαίωσε ότι φτάνουν τα rewards.
02
Postback PHP
Μετά από επιτυχημένη ψήφο ζητάμε το URL σου με την παράμετρο παίκτη και το IP του. Το script σου σημειώνει ότι ο λογαριασμός ψήφισε και δίνει πόντους ή αντικείμενα.
Βάλε σε whitelist το δημόσιο outbound IP αυτής της ιστοσελίδας στο firewall και στο postback script σου. Απόρριψε κάθε άλλη πηγή. Προτίμησε HTTPS.
Όταν χτυπάμε το postback σου με p_resp=Razor, ο παίκτης Razor έχει ψηφίσει. Η τιμή ip είναι η διεύθυνση που χρησιμοποίησε σε αυτή τη λίστα.
Τι πρέπει να κάνει το script σου
Επαλήθευσε ότι το αίτημα προέρχεται από το δημόσιο IP αυτής της λίστας.
Καθάρισε τα p_resp και ip (μην εμπιστεύεσαι ποτέ raw input).
Επιβεβαίωσε ότι ο λογαριασμός / χαρακτήρας υπάρχει στη βάση σου.
Εφάρμοσε δικό σου reward cooldown αν χρειάζεσαι κάτι πιο αυστηρό από 24 ώρες.
Δώσε πόντους, coins ή αντικείμενα· κατέγραψε το γεγονός· επέστρεψε HTTP 200.
παράδειγμα postback.php
Φιλοξένησέ το στο rewards site σου, όχι απαραίτητα σε αυτή τη λίστα ψήφων. Όρισε το VOTE_LIST_IP στο outbound δημόσιο IP αυτής της ιστοσελίδας πριν πας 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
Μπορούμε να σπρώξουμε την ψήφο απευθείας στον Minecraft server σου. Ένα listener plugin τρέχει μετά τις εντολές reward σου.
Firewall: επίτρεψε inbound TCP από το δημόσιο IP αυτής της ιστοσελίδας στο port Votifier σου (προεπιλογή 8192). Μην εκθέτεις το port σε όλο το internet αν μπορείς να το αποφύγεις.
1
Ο παίκτης βάζει το Minecraft username του στη σελίδα ψήφου μας (ή φτάνει μέσω ?p=Steve).
2
Η ψήφος επιτυγχάνει σε αυτή τη λίστα.
3
Συνδεόμαστε στο host/port Votifier σου και παραδίδουμε το πακέτο ψήφου.
4
Το listener σου δίνει crates, keys, χρήματα κ.λπ.
Ενεργοποίησε Votifier στις Λεπτομέρειες Minecraft, διάλεξε NuVotifier v2 ή Classic και μετά βάλε host, port και token ή δημόσιο κλειδί RSA.
Εγκατέστησε NuVotifier (classic RSA και πρωτόκολλο v2) ή classic Votifier, συν listener για την έκδοση Minecraft σου (GAListener, SuperbVote ή custom listener).
Classic / v1: επικόλλησε το πλήρες αρχείο public.key. Host και port προέρχονται από το config.yml. Κράτα debug: true όσο συνδέεις αυτή τη λίστα και μετά απενεργοποίησέ το.
host: YOUR_PUBLIC_IP
port: 8192
debug: true
Τα πακέτα αναγνωρίζουν αυτή τη λίστα ως: JoinGameServers
04
NuVotifier v2
Το πρωτόκολλο v2 αντικαθιστά το RSA με κοινόχρηστο token και one-time challenge. Αντιστοίχισε token στο service name αυτής της λίστας ή χρησιμοποίησε το προεπιλεγμένο token.
Το greeting δεν έχει challenge — χρησιμοποίησε Classic ή αναβάθμισε το NuVotifier και ενεργοποίησε v2.
Μη έγκυρη υπογραφή / άγνωστο service
Λάθος token ή το service name δεν είναι mapped. Πρόσθεσε το service name της λίστας ή χρησιμοποίησε το default.
Αποτυχία σύνδεσης / timeout
Λάθος host/port, Votifier offline ή το firewall μπλοκάρει το IP αυτής της λίστας.
Καμία απάντηση
Παρέμβαση proxy/plugin· ενεργοποίησε NuVotifier debug και δοκίμασε ξανά.
05
Checklist δοκιμών
Αποθήκευσε τις ρυθμίσεις καταχώρησης χωρίς σφάλματα επικύρωσης.
Άνοιξε ένα incentive link — το πεδίο ονόματος χρήστη πρέπει να προ συμπληρώνεται από ?p=.
Κάνε μία ψήφο. Πρέπει να δεις την κατάσταση επιτυχίας. Δεύτερη ψήφος εντός 24 ωρών πρέπει να μπλοκάρεται.
Επαλήθευσε postback: ενεργοποίησε DEBUG στον receiver σου· επιβεβαίωσε ότι φτάνουν p_resp και ip.
Επαλήθευσε Votifier: με debug true, η κονσόλα Minecraft πρέπει να δείχνει εισερχόμενη ψήφο για το username σου και το service name αυτής της λίστας.
Επιβεβαίωσε το in-game ή site reward. Αν όχι, διόρθωσε το listener — η ψήφος στη λίστα μετράει ακόμα.
Οι προσπάθειες παράδοσης καταγράφονται στο vote_reward_logs (ok / fail / skipped). Ένα αποτυχημένο callback δεν αναιρεί ποτέ την ψήφο σε αυτή τη λίστα.
06
Συχνές ερωτήσεις & αντιμετώπιση προβλημάτων
Όχι. Οι επισκέπτες μπορούν να ψηφίζουν. Οι συνδεδεμένοι λογαριασμοί μοιράζονται τους ίδιους κανόνες cooldown 24 ωρών για αποτροπή κατάχρησης.
Αν έχεις ρυθμίσει postback URL ή Votifier, χρειαζόμαστε παράμετρο για να σου πούμε ποιον να ανταμείψεις. Χωρίς ρυθμισμένα rewards, το όνομα χρήστη μένει προαιρετικό.
Ναι. Και τα δύο τρέχουν μετά από επιτυχημένη ψήφο. Οι αποτυχίες είναι ανεξάρτητες.
Πρέπει να είναι δημόσιο http(s) URL. Localhost, .local, ιδιωτικά IPs (π.χ. 10.*, 192.168.*) και URLs με ενσωματωμένα credentials μπλοκάρονται.
Επιβεβαίωσε ότι η ψήφος πέτυχε σε αυτή τη λίστα. Έλεγξε τα postback logs ή το NuVotifier debug output. Επαλήθευσε firewall allowlists και ότι το username ταιριάζει με in-game λογαριασμό. Το cooldown της λίστας είναι 24 ώρες· το δικό σου reward cooldown μπορεί να διαφέρει.
Μόνο A–Z, a–z, 0–9, _ και -. Οτιδήποτε άλλο αφαιρείται. Κράτα τις παραμέτρους ≤ 32 χαρακτήρες.
Εγκαταστήστε την εφαρμογήΠροσθέστε το JoinGameServers στην αρχική σας οθόνη για γρήγορη πρόσβαση.