Good game
This commit is contained in:
parent
b535a47db4
commit
612728f586
@ -11,6 +11,11 @@ class HomeController extends Controller {
|
|||||||
$category = $_GET['category'] ?? null;
|
$category = $_GET['category'] ?? null;
|
||||||
$search = $_GET['search'] ?? null;
|
$search = $_GET['search'] ?? null;
|
||||||
|
|
||||||
|
// Store referral code if present in landing
|
||||||
|
if (isset($_GET['ref'])) {
|
||||||
|
$_SESSION['global_ref'] = $_GET['ref'];
|
||||||
|
}
|
||||||
|
|
||||||
$apkService = new ApkService();
|
$apkService = new ApkService();
|
||||||
$apks = $apkService->getAllApks($category, $search);
|
$apks = $apkService->getAllApks($category, $search);
|
||||||
|
|
||||||
@ -31,9 +36,11 @@ class HomeController extends Controller {
|
|||||||
$this->redirect('/');
|
$this->redirect('/');
|
||||||
}
|
}
|
||||||
|
|
||||||
// Store referral code if present specifically for this APK
|
// Store referral code if present specifically for this APK or take from global session
|
||||||
if (isset($_GET['ref'])) {
|
if (isset($_GET['ref'])) {
|
||||||
$_SESSION['ref_download_' . $apk['id']] = $_GET['ref'];
|
$_SESSION['ref_download_' . $apk['id']] = $_GET['ref'];
|
||||||
|
} elseif (isset($_SESSION['global_ref'])) {
|
||||||
|
$_SESSION['ref_download_' . $apk['id']] = $_SESSION['global_ref'];
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->view('apk_detail', [
|
$this->view('apk_detail', [
|
||||||
@ -57,10 +64,17 @@ class HomeController extends Controller {
|
|||||||
$stmt = $db->prepare("UPDATE apks SET total_downloads = total_downloads + 1 WHERE id = ?");
|
$stmt = $db->prepare("UPDATE apks SET total_downloads = total_downloads + 1 WHERE id = ?");
|
||||||
$stmt->execute([$apk['id']]);
|
$stmt->execute([$apk['id']]);
|
||||||
|
|
||||||
// Referral logic
|
// Referral logic & Anti-Cheat
|
||||||
$ref_key = 'ref_download_' . $apk['id'];
|
$ref_key = 'ref_download_' . $apk['id'];
|
||||||
if (isset($_SESSION['ref_download_' . $apk['id']])) {
|
|
||||||
$ref_code = $_SESSION['ref_download_' . $apk['id']];
|
// If not set for this specific APK, try global referral
|
||||||
|
if (!isset($_SESSION[$ref_key]) && isset($_SESSION['global_ref'])) {
|
||||||
|
$_SESSION[$ref_key] = $_SESSION['global_ref'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_SESSION[$ref_key])) {
|
||||||
|
$ref_code = $_SESSION[$ref_key];
|
||||||
|
$ip_address = $_SERVER['REMOTE_ADDR'];
|
||||||
|
|
||||||
// Find the user who owns this referral code
|
// Find the user who owns this referral code
|
||||||
$stmt = $db->prepare("SELECT * FROM users WHERE referral_code = ?");
|
$stmt = $db->prepare("SELECT * FROM users WHERE referral_code = ?");
|
||||||
@ -68,10 +82,28 @@ class HomeController extends Controller {
|
|||||||
$referrer = $stmt->fetch();
|
$referrer = $stmt->fetch();
|
||||||
|
|
||||||
if ($referrer) {
|
if ($referrer) {
|
||||||
// Award points/money to referrer
|
// Anti-Cheat: Check if this IP has already downloaded this APK for THIS referrer today
|
||||||
// For example, 100 rupiah per download
|
$stmt = $db->prepare("SELECT COUNT(*) FROM referral_downloads WHERE referrer_id = ? AND apk_id = ? AND ip_address = ? AND created_at > DATE_SUB(NOW(), INTERVAL 24 HOUR)");
|
||||||
$stmt = $db->prepare("UPDATE users SET balance = balance + 100 WHERE id = ?");
|
$stmt->execute([$referrer['id'], $apk['id'], $ip_address]);
|
||||||
$stmt->execute([$referrer['id']]);
|
$already_downloaded = $stmt->fetchColumn();
|
||||||
|
|
||||||
|
// Anti-Cheat: Check general download frequency from this IP (max 10 rewarded downloads per IP per 24h across all APKs)
|
||||||
|
$stmt = $db->prepare("SELECT COUNT(*) FROM referral_downloads WHERE ip_address = ? AND created_at > DATE_SUB(NOW(), INTERVAL 24 HOUR)");
|
||||||
|
$stmt->execute([$ip_address]);
|
||||||
|
$ip_total_daily = $stmt->fetchColumn();
|
||||||
|
|
||||||
|
if ($already_downloaded == 0 && $ip_total_daily < 10) {
|
||||||
|
// Reward amount
|
||||||
|
$reward_amount = 500.00;
|
||||||
|
|
||||||
|
// Record the referral download
|
||||||
|
$stmt = $db->prepare("INSERT INTO referral_downloads (referrer_id, apk_id, ip_address, amount) VALUES (?, ?, ?, ?)");
|
||||||
|
$stmt->execute([$referrer['id'], $apk['id'], $ip_address, $reward_amount]);
|
||||||
|
|
||||||
|
// Award balance to referrer
|
||||||
|
$stmt = $db->prepare("UPDATE users SET balance = balance + ? WHERE id = ?");
|
||||||
|
$stmt->execute([$reward_amount, $referrer['id']]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
unset($_SESSION[$ref_key]);
|
unset($_SESSION[$ref_key]);
|
||||||
|
|||||||
BIN
assets/pasted-20260224-235212-4dbae770.jpg
Normal file
BIN
assets/pasted-20260224-235212-4dbae770.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 335 KiB |
@ -1,10 +1,19 @@
|
|||||||
-- Full Schema for APK Portal
|
-- Full Schema for APK Portal
|
||||||
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
|
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
|
||||||
|
SET AUTOCOMMIT = 0;
|
||||||
START TRANSACTION;
|
START TRANSACTION;
|
||||||
SET time_zone = "+00:00";
|
SET time_zone = "+00:00";
|
||||||
|
SET FOREIGN_KEY_CHECKS=0;
|
||||||
|
|
||||||
-- --------------------------------------------------------
|
-- --------------------------------------------------------
|
||||||
|
|
||||||
|
-- Table structure for table `settings`
|
||||||
|
CREATE TABLE IF NOT EXISTS `settings` (
|
||||||
|
`id` INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
`setting_key` VARCHAR(255) UNIQUE,
|
||||||
|
`setting_value` TEXT
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
-- Table structure for table `users`
|
-- Table structure for table `users`
|
||||||
CREATE TABLE IF NOT EXISTS `users` (
|
CREATE TABLE IF NOT EXISTS `users` (
|
||||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
@ -83,7 +92,17 @@ CREATE TABLE IF NOT EXISTS `referral_downloads` (
|
|||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
-- Default Data
|
-- Default Data
|
||||||
|
INSERT IGNORE INTO `settings` (`setting_key`, `setting_value`) VALUES
|
||||||
|
('site_name', 'ApkNusa'),
|
||||||
|
('site_icon', ''),
|
||||||
|
('site_favicon', ''),
|
||||||
|
('meta_description', 'Download the latest APKs for free.'),
|
||||||
|
('meta_keywords', 'apk, download, android, games, apps'),
|
||||||
|
('head_js', ''),
|
||||||
|
('body_js', '');
|
||||||
|
|
||||||
INSERT IGNORE INTO `users` (`username`, `password`, `role`) VALUES ('admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin'); -- password: admin123
|
INSERT IGNORE INTO `users` (`username`, `password`, `role`) VALUES ('admin', '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', 'admin'); -- password: admin123
|
||||||
INSERT IGNORE INTO `categories` (`name`, `slug`) VALUES ('Games', 'games'), ('Apps', 'apps'), ('Tools', 'tools');
|
INSERT IGNORE INTO `categories` (`name`, `slug`) VALUES ('Games', 'games'), ('Apps', 'apps'), ('Tools', 'tools');
|
||||||
|
|
||||||
|
SET FOREIGN_KEY_CHECKS=1;
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user