From 1ae0350b1835cd0623e48aaede3930ba3dcf017c Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Wed, 18 Feb 2026 15:11:28 +0000 Subject: [PATCH] =?UTF-8?q?=E4=BA=A4=E6=98=93=E6=89=80888?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DEPLOY.md | 14 + assets/pasted-20260218-145853-27145d0f.png | Bin 0 -> 66162 bytes db/exchange_rates.json | 1 + includes/exchange.php | 94 ++++ includes/lang.php | 28 ++ install.sql | 551 +++++++++++++++++++++ recharge.php | 23 +- withdraw.php | 18 +- 8 files changed, 709 insertions(+), 20 deletions(-) create mode 100644 DEPLOY.md create mode 100644 assets/pasted-20260218-145853-27145d0f.png create mode 100644 db/exchange_rates.json create mode 100644 includes/exchange.php create mode 100644 install.sql diff --git a/DEPLOY.md b/DEPLOY.md new file mode 100644 index 0000000..446b577 --- /dev/null +++ b/DEPLOY.md @@ -0,0 +1,14 @@ +# Deployment Instructions + +1. **Upload Files**: Upload all files to your server (e.g., via BT Panel/宝塔). +2. **Database Setup**: + - Create a new MySQL/MariaDB database. + - Import `install.sql` into the new database. +3. **Configuration**: + - Edit `db/config.php` and update the `DB_NAME`, `DB_USER`, and `DB_PASS` with your new database credentials. +4. **Permissions**: Ensure the `uploads/` and `db/` directories are writable by the web server. + +## Features +- **Real-time Exchange Rates**: Fiat-to-USDT rates are fetched automatically. +- **Global Currencies**: Supports 30+ major global currencies with flags. +- **Admin Panel**: Accessible via `/admin`. Default login: `admin` / `admin`. diff --git a/assets/pasted-20260218-145853-27145d0f.png b/assets/pasted-20260218-145853-27145d0f.png new file mode 100644 index 0000000000000000000000000000000000000000..7b97d1f71e185836ea750eb37392acb49c56f2bf GIT binary patch literal 66162 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 z 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 1, + 'EUR' => 0.92, + 'GBP' => 0.79, + 'CNY' => 7.23, + 'JPY' => 150.1, + 'HKD' => 7.82, + 'TWD' => 31.6, + 'KRW' => 1332.0 + ]; +} + +function get_rate($currency) { + $rates = get_exchange_rates(); + return $rates[$currency] ?? 1.0; +} + +function get_global_currencies() { + return [ + 'USD' => ['name' => __('usd_name'), 'flag' => '🇺🇸'], + 'EUR' => ['name' => __('eur_name'), 'flag' => '🇪🇺'], + 'GBP' => ['name' => __('gbp_name'), 'flag' => '🇬🇧'], + 'JPY' => ['name' => __('jpy_name'), 'flag' => '🇯🇵'], + 'CNY' => ['name' => __('cny_name'), 'flag' => '🇨🇳'], + 'HKD' => ['name' => __('hkd_name'), 'flag' => '🇭🇰'], + 'TWD' => ['name' => __('twd_name'), 'flag' => '🇹🇼'], + 'KRW' => ['name' => __('krw_name'), 'flag' => '🇰🇷'], + 'SGD' => ['name' => __('sgd_name'), 'flag' => '🇸🇬'], + 'MYR' => ['name' => __('myr_name'), 'flag' => '🇲🇾'], + 'THB' => ['name' => __('thb_name'), 'flag' => '🇹🇭'], + 'VND' => ['name' => __('vnd_name'), 'flag' => '🇻🇳'], + 'PHP' => ['name' => __('php_name'), 'flag' => '🇵🇭'], + 'IDR' => ['name' => __('idr_name'), 'flag' => '🇮🇩'], + 'AUD' => ['name' => __('aud_name'), 'flag' => '🇦🇺'], + 'CAD' => ['name' => __('cad_name'), 'flag' => '🇨🇦'], + 'CHF' => ['name' => __('chf_name'), 'flag' => '🇨🇭'], + 'BRL' => ['name' => __('brl_name'), 'flag' => '🇧🇷'], + 'RUB' => ['name' => __('rub_name'), 'flag' => '🇷🇺'], + 'INR' => ['name' => __('inr_name'), 'flag' => '🇮🇳'], + 'ZAR' => ['name' => __('zar_name'), 'flag' => '🇿🇦'], + 'TRY' => ['name' => __('try_name'), 'flag' => '🇹🇷'], + 'AED' => ['name' => __('aed_name'), 'flag' => '🇦🇪'], + 'SAR' => ['name' => __('sar_name'), 'flag' => '🇸🇦'], + 'MXN' => ['name' => __('mxn_name'), 'flag' => '🇲🇽'], + 'NZD' => ['name' => 'NZD', 'flag' => '🇳🇿'], + 'SEK' => ['name' => 'SEK', 'flag' => '🇸🇪'], + 'NOK' => ['name' => 'NOK', 'flag' => '🇳🇴'], + 'DKK' => ['name' => 'DKK', 'flag' => '🇩🇰'], + 'ILS' => ['name' => 'ILS', 'flag' => '🇮🇱'], + 'PLN' => ['name' => 'PLN', 'flag' => '🇵🇱'], + 'PKR' => ['name' => 'PKR', 'flag' => '🇵🇰'], + 'EGP' => ['name' => 'EGP', 'flag' => '🇪🇬'], + 'ARS' => ['name' => 'ARS', 'flag' => '🇦🇷'], + 'CLP' => ['name' => 'CLP', 'flag' => '🇨🇱'], + 'COP' => ['name' => 'COP', 'flag' => '🇨🇴'], + 'PEN' => ['name' => 'PEN', 'flag' => '🇵🇪'], + 'KWD' => ['name' => 'KWD', 'flag' => '🇰🇼'], + 'QAR' => ['name' => 'QAR', 'flag' => '🇶🇦'], + ]; +} diff --git a/includes/lang.php b/includes/lang.php index 1bbc83a..19c20f3 100644 --- a/includes/lang.php +++ b/includes/lang.php @@ -477,6 +477,20 @@ $translations = [ 'trade_pwd_updated' => '交易密码已更新', 'security_step1' => '为了您的资产安全,请务必绑定手机和邮箱,并开启谷歌验证。', 'security_step2' => '请妥善保管您的登录密码和交易密码,切勿泄露给他人。', + 'trade_password' => '交易密码', + 'aud_name' => '澳大利亚元', + 'cad_name' => '加拿大元', + 'chf_name' => '瑞士法郎', + 'brl_name' => '巴西雷亚尔', + 'rub_name' => '俄罗斯卢布', + 'inr_name' => '印度卢比', + 'zar_name' => '南非兰特', + 'try_name' => '土耳其里拉', + 'aed_name' => '阿联酋迪拉姆', + 'sar_name' => '沙特里亚尔', + 'mxn_name' => '墨西哥比索', + 'php_name' => '菲律宾比索', + 'idr_name' => '印尼盾', ], 'en' => [ 'home' => 'Home', @@ -954,6 +968,20 @@ $translations = [ 'trade_pwd_updated' => 'Trade password updated', 'security_step1' => 'For your asset security, please bind your phone and email, and enable Google Verification.', 'security_step2' => 'Please keep your login and trade passwords safe and never disclose them to others.', + 'trade_password' => 'Trade Password', + 'aud_name' => 'AUD', + 'cad_name' => 'CAD', + 'chf_name' => 'CHF', + 'brl_name' => 'BRL', + 'rub_name' => 'RUB', + 'inr_name' => 'INR', + 'zar_name' => 'ZAR', + 'try_name' => 'TRY', + 'aed_name' => 'AED', + 'sar_name' => 'SAR', + 'mxn_name' => 'MXN', + 'php_name' => 'PHP', + 'idr_name' => 'IDR', ], ]; diff --git a/install.sql b/install.sql new file mode 100644 index 0000000..ef66cdc --- /dev/null +++ b/install.sql @@ -0,0 +1,551 @@ +/*M!999999\- enable the sandbox mode */ +-- MariaDB dump 10.19 Distrib 10.11.14-MariaDB, for debian-linux-gnu (x86_64) +-- +-- Host: 127.0.0.1 Database: app_38451 +-- ------------------------------------------------------ +-- Server version 10.11.14-MariaDB-0+deb12u2 + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8mb4 */; +/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */; +/*!40103 SET TIME_ZONE='+00:00' */; +/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */; +/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; +/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; +/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; + +-- +-- Table structure for table `admins` +-- + +DROP TABLE IF EXISTS `admins`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `admins` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `username` varchar(50) NOT NULL, + `password_hash` varchar(255) NOT NULL, + `role` varchar(20) DEFAULT 'admin', + `created_at` timestamp NULL DEFAULT current_timestamp(), + `is_agent` tinyint(4) DEFAULT 0, + `permissions` text DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `username` (`username`) +) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `admins` +-- + +LOCK TABLES `admins` WRITE; +/*!40000 ALTER TABLE `admins` DISABLE KEYS */; +INSERT INTO `admins` VALUES +(1,'admin','$2y$10$uJvcqHNb.naRWj.apBapi.C.fF2zaIbMhYEtVdGmmVUWZkQi9ESfe','admin','2026-02-18 03:07:35',0,NULL); +/*!40000 ALTER TABLE `admins` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `binary_orders` +-- + +DROP TABLE IF EXISTS `binary_orders`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `binary_orders` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `user_id` int(11) NOT NULL, + `symbol` varchar(20) NOT NULL, + `direction` varchar(10) DEFAULT NULL, + `amount` decimal(20,8) NOT NULL, + `duration` int(11) NOT NULL, + `profit_rate` decimal(5,2) NOT NULL, + `entry_price` decimal(20,8) NOT NULL, + `close_price` decimal(20,8) DEFAULT NULL, + `status` enum('pending','won','lost','cancelled') DEFAULT 'pending', + `control_status` tinyint(4) DEFAULT 0 COMMENT '0: normal, 1: force win, 2: force loss', + `created_at` timestamp NULL DEFAULT current_timestamp(), + `end_at` timestamp NULL DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `binary_orders` +-- + +LOCK TABLES `binary_orders` WRITE; +/*!40000 ALTER TABLE `binary_orders` DISABLE KEYS */; +INSERT INTO `binary_orders` VALUES +(1,2,'BTC','up',100.00000000,60,8.00,67652.01000000,68328.53010000,'won',1,'2026-02-18 06:00:25','2026-02-18 08:00:59'), +(2,2,'BTC','down',100.00000000,60,8.00,67788.80000000,67110.91200000,'won',1,'2026-02-18 06:16:43','2026-02-18 08:00:59'), +(3,2,'BTC','up',1000.00000000,60,8.00,67879.37000000,68558.16370000,'won',1,'2026-02-18 06:40:10','2026-02-18 08:00:59'), +(4,2,'BTC','up',500.00000000,60,8.00,67839.92000000,68518.31920000,'won',1,'2026-02-18 06:57:02','2026-02-18 08:00:59'), +(5,2,'BTC','up',100.00000000,60,8.00,67813.14000000,68491.27140000,'won',1,'2026-02-18 07:07:26','2026-02-18 08:00:59'), +(6,2,'BTC','down',100.00000000,60,8.00,67770.32000000,67092.61680000,'won',1,'2026-02-18 07:17:26','2026-02-18 08:00:59'), +(7,2,'BTC','down',100.00000000,60,8.00,67753.40000000,67075.86600000,'won',1,'2026-02-18 07:22:09','2026-02-18 08:00:59'), +(8,2,'BTC','up',100.00000000,60,8.00,67756.31000000,68433.87310000,'won',1,'2026-02-18 07:27:16','2026-02-18 08:01:00'), +(9,2,'BTC','down',100.00000000,60,8.00,67798.67000000,67120.68330000,'won',1,'2026-02-18 07:33:08','2026-02-18 08:01:00'), +(10,2,'BTC','down',100.00000000,60,8.00,68073.40000000,67392.66600000,'won',1,'2026-02-18 07:44:11','2026-02-18 08:01:00'), +(11,2,'BTC','up',100.00000000,60,8.00,68158.35000000,68839.93350000,'won',1,'2026-02-18 07:50:39','2026-02-18 08:01:00'), +(12,2,'BTC','up',100.00000000,60,8.00,68142.00000000,68823.42000000,'won',1,'2026-02-18 08:02:35','2026-02-18 08:03:35'), +(13,2,'BTC','down',100.00000000,60,8.00,68175.65000000,68169.15000000,'won',1,'2026-02-18 08:37:39','2026-02-18 08:38:40'); +/*!40000 ALTER TABLE `binary_orders` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `contract_orders` +-- + +DROP TABLE IF EXISTS `contract_orders`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `contract_orders` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `user_id` int(11) NOT NULL, + `symbol` varchar(20) NOT NULL, + `type` enum('limit','market') DEFAULT 'market', + `direction` varchar(10) DEFAULT NULL, + `leverage` int(11) DEFAULT 1, + `amount` decimal(20,8) NOT NULL, + `entry_price` decimal(20,8) DEFAULT NULL, + `close_price` decimal(20,8) DEFAULT NULL, + `status` enum('open','closed','cancelled') DEFAULT 'open', + `profit` decimal(20,8) DEFAULT 0.00000000, + `control_status` tinyint(4) DEFAULT 0 COMMENT '0: normal, 1: force win, 2: force loss', + `created_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `contract_orders` +-- + +LOCK TABLES `contract_orders` WRITE; +/*!40000 ALTER TABLE `contract_orders` DISABLE KEYS */; +/*!40000 ALTER TABLE `contract_orders` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `exchange_records` +-- + +DROP TABLE IF EXISTS `exchange_records`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `exchange_records` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `user_id` int(11) NOT NULL, + `from_symbol` varchar(10) NOT NULL, + `to_symbol` varchar(10) NOT NULL, + `from_amount` decimal(20,8) NOT NULL, + `to_amount` decimal(20,8) NOT NULL, + `rate` decimal(20,8) NOT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `exchange_records` +-- + +LOCK TABLES `exchange_records` WRITE; +/*!40000 ALTER TABLE `exchange_records` DISABLE KEYS */; +/*!40000 ALTER TABLE `exchange_records` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `finance_requests` +-- + +DROP TABLE IF EXISTS `finance_requests`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `finance_requests` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `user_id` int(11) NOT NULL, + `type` enum('recharge','withdrawal') NOT NULL, + `amount` decimal(20,8) NOT NULL, + `symbol` varchar(10) DEFAULT 'USDT', + `status` enum('pending','approved','rejected') DEFAULT 'pending', + `payment_method` varchar(50) DEFAULT NULL, + `payment_details` text DEFAULT NULL, + `rejection_reason` text DEFAULT NULL, + `tx_hash` varchar(255) DEFAULT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + `updated_at` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), + `fiat_amount` decimal(20,2) DEFAULT NULL, + `fiat_currency` varchar(10) DEFAULT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `finance_requests` +-- + +LOCK TABLES `finance_requests` WRITE; +/*!40000 ALTER TABLE `finance_requests` DISABLE KEYS */; +INSERT INTO `finance_requests` VALUES +(1,2,'recharge',209.64000000,'USDT','approved','Fiat (MYR)',NULL,NULL,'','2026-02-18 04:45:54','2026-02-18 04:46:29',NULL,NULL), +(2,2,'recharge',10.00000000,'USDT','approved','Fiat (MYR)',NULL,NULL,'','2026-02-18 06:15:15','2026-02-18 06:16:15',NULL,NULL), +(3,2,'recharge',10.00000000,'USDT','approved','Fiat (MYR)',NULL,NULL,'','2026-02-18 06:33:05','2026-02-18 06:33:17',NULL,NULL), +(4,2,'recharge',10.00000000,'USDT','approved','Fiat (MYR: 50000)',NULL,NULL,'','2026-02-18 06:37:57','2026-02-18 06:38:22',NULL,NULL), +(5,2,'recharge',209.64000000,'USDT','approved','Fiat (MYR)',NULL,NULL,'','2026-02-18 06:54:02','2026-02-18 06:54:16',1000.00,'MYR'), +(6,2,'withdrawal',9249.28000000,'USDT','approved',NULL,'Fiat (MYR)',NULL,NULL,'2026-02-18 06:54:44','2026-02-18 06:54:58',44119.07,'MYR'), +(7,2,'recharge',10000.00000000,'USDT','approved','Fiat (USD)',NULL,NULL,'','2026-02-18 06:56:22','2026-02-18 06:56:45',10000.00,'USD'), +(8,2,'recharge',100.00000000,'USDT','approved','Fiat (USD)',NULL,NULL,'','2026-02-18 07:09:10','2026-02-18 07:10:11',100.00,'USD'), +(9,2,'withdrawal',1000.00000000,'USDT','approved',NULL,'Fiat (USD)',NULL,NULL,'2026-02-18 08:13:47','2026-02-18 08:14:10',1000.00,'USD'), +(10,2,'recharge',100.00000000,'USDT','approved','Fiat (USD)',NULL,NULL,'','2026-02-18 09:05:05','2026-02-18 09:05:52',100.00,'USD'), +(11,2,'withdrawal',100.00000000,'USDT','approved',NULL,'Fiat (USD)',NULL,NULL,'2026-02-18 09:06:13','2026-02-18 09:06:48',100.00,'USD'), +(12,2,'recharge',209.64000000,'USDT','approved','Fiat (MYR)',NULL,NULL,'','2026-02-18 09:26:51','2026-02-18 09:27:12',1000.00,'MYR'), +(13,2,'withdrawal',700.00000000,'USDT','approved',NULL,'Fiat (USD)',NULL,NULL,'2026-02-18 09:27:38','2026-02-18 09:27:52',700.00,'USD'), +(14,2,'recharge',746.27000000,'USDT','approved','Fiat (SGD)',NULL,NULL,'','2026-02-18 11:17:06','2026-02-18 11:18:57',1000.00,'SGD'), +(15,2,'withdrawal',1000.00000000,'USDT','approved',NULL,'Fiat (MYR)',NULL,NULL,'2026-02-18 11:18:24','2026-02-18 11:19:04',4770.00,'MYR'), +(16,2,'recharge',1000.00000000,'USDT','approved','TRC20',NULL,NULL,'','2026-02-18 11:21:13','2026-02-18 11:21:33',NULL,NULL), +(17,2,'recharge',746.26865672,'USDT','approved','Fiat (SGD)',NULL,NULL,'','2026-02-18 11:41:32','2026-02-18 11:41:46',1000.00,'SGD'); +/*!40000 ALTER TABLE `finance_requests` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `messages` +-- + +DROP TABLE IF EXISTS `messages`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `messages` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `user_id` int(11) DEFAULT NULL, + `admin_id` int(11) DEFAULT NULL, + `sender` enum('user','admin') DEFAULT NULL, + `message` text DEFAULT NULL, + `ip_address` varchar(45) DEFAULT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=28 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `messages` +-- + +LOCK TABLES `messages` WRITE; +/*!40000 ALTER TABLE `messages` DISABLE KEYS */; +INSERT INTO `messages` VALUES +(1,1,NULL,'user','1','::1','2026-02-16 03:27:13'), +(2,1,1,'admin','1','::1','2026-02-16 03:27:24'), +(3,1,NULL,'user','1','::1','2026-02-16 05:05:24'), +(4,1,1,'admin','你好','::1','2026-02-16 05:05:50'), +(5,1,NULL,'user','[Recharge Request]Fiat Amount: 1000 CNYEstimated USDT: 139.08 USDTPlease provide payment details.','::1','2026-02-16 06:43:24'), +(6,1,NULL,'user','1','::1','2026-02-18 03:03:47'), +(7,1,1,'admin','222','::1','2026-02-18 03:04:14'), +(8,2,NULL,'user','【充值】类型:法币充值金额:1000 MYR预计到账 USDT:209.64 USDT','::1','2026-02-18 03:21:37'), +(9,2,NULL,'user','【充值】类型:法币充值金额:1000 MYR预计到账 USDT:209.64 USDT','::1','2026-02-18 04:45:54'), +(10,2,2,'admin','11','::1','2026-02-18 09:00:56'), +(11,2,NULL,'user','你好手上','::1','2026-02-18 09:04:32'), +(12,2,1,'admin','你好','::1','2026-02-18 09:04:43'), +(13,2,NULL,'user','[RECHARGE REQUEST]------------------Type: Fiat RechargeAmount: 100 USDRate: 1 USDT = 1 USDEst. USDT: 100.00 USDTStatus: Pending Approval------------------Please confirm my deposit.','::1','2026-02-18 09:05:05'), +(14,2,NULL,'user','[WITHDRAWAL REQUEST]------------------Type: Fiat WithdrawalAmount: 100.00 USDTRate: 1 USDT = 1 USDTo Receive: 100.00 USD------------------Please process my fiat withdrawal.','::1','2026-02-18 09:06:13'), +(15,2,1,'admin','2222','::1','2026-02-18 09:21:27'), +(16,2,NULL,'user','2222','::1','2026-02-18 09:21:34'), +(17,2,NULL,'user','1','::1','2026-02-18 09:21:37'), +(18,2,1,'admin','123','::1','2026-02-18 09:25:25'), +(19,2,NULL,'user','321','::1','2026-02-18 09:25:32'), +(20,2,NULL,'user','recharge_msg_fiat','::1','2026-02-18 09:26:52'), +(21,2,NULL,'user','withdraw_msg_fiat','::1','2026-02-18 09:27:38'), +(22,2,NULL,'user','用户ID:05617613 申请充值金额:1000 SGD=1.34USDT','::1','2026-02-18 11:17:06'), +(23,2,1,'admin','1','::1','2026-02-18 11:17:41'), +(24,2,NULL,'user','用户ID:05617613 申请提现金额:1000.00 MYR=4.77USDT','::1','2026-02-18 11:18:24'), +(25,2,NULL,'user','用户ID:05617613 申请充值金额:1000 USDT (TRC20)','::1','2026-02-18 11:21:13'), +(26,2,NULL,'user','用户ID:05617613 申请充值金额:1000 SGD=746.2687USDT','::1','2026-02-18 11:41:32'), +(27,0,NULL,'user','你好手上','::1','2026-02-18 13:40:18'); +/*!40000 ALTER TABLE `messages` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `price_controls` +-- + +DROP TABLE IF EXISTS `price_controls`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `price_controls` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `symbol` varchar(20) NOT NULL, + `target_price` decimal(20,8) NOT NULL, + `execution_time` timestamp NOT NULL, + `duration` int(11) DEFAULT 60 COMMENT 'seconds', + `created_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `price_controls` +-- + +LOCK TABLES `price_controls` WRITE; +/*!40000 ALTER TABLE `price_controls` DISABLE KEYS */; +/*!40000 ALTER TABLE `price_controls` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `spot_orders` +-- + +DROP TABLE IF EXISTS `spot_orders`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `spot_orders` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `user_id` int(11) NOT NULL, + `symbol` varchar(20) NOT NULL, + `side` enum('buy','sell') NOT NULL, + `price` decimal(20,8) DEFAULT NULL, + `amount` decimal(20,8) NOT NULL, + `filled` decimal(20,8) DEFAULT 0.00000000, + `status` enum('pending','filled','cancelled') DEFAULT 'pending', + `created_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `spot_orders` +-- + +LOCK TABLES `spot_orders` WRITE; +/*!40000 ALTER TABLE `spot_orders` DISABLE KEYS */; +/*!40000 ALTER TABLE `spot_orders` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `staking_records` +-- + +DROP TABLE IF EXISTS `staking_records`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `staking_records` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `user_id` int(11) NOT NULL, + `plan_name` varchar(100) NOT NULL, + `amount` decimal(20,8) NOT NULL, + `symbol` varchar(10) DEFAULT 'USDT', + `daily_profit` decimal(5,2) NOT NULL, + `period` int(11) NOT NULL COMMENT 'days', + `status` enum('running','ended') DEFAULT 'running', + `start_date` date NOT NULL, + `end_date` date NOT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `staking_records` +-- + +LOCK TABLES `staking_records` WRITE; +/*!40000 ALTER TABLE `staking_records` DISABLE KEYS */; +/*!40000 ALTER TABLE `staking_records` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `system_settings` +-- + +DROP TABLE IF EXISTS `system_settings`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `system_settings` ( + `setting_key` varchar(50) NOT NULL, + `setting_value` text DEFAULT NULL, + PRIMARY KEY (`setting_key`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `system_settings` +-- + +LOCK TABLES `system_settings` WRITE; +/*!40000 ALTER TABLE `system_settings` DISABLE KEYS */; +INSERT INTO `system_settings` VALUES +('android_download_url','/downloads/byro.apk'), +('apk_download_url','/downloads/byro.apk'), +('email_verification_enabled','0'), +('ios_download_url','/downloads/byro.apk'), +('mail_from_email',''), +('mail_from_name','Byro Exchange'), +('service_link',''), +('site_logo',''), +('site_name','Byro'), +('smtp_host',''), +('smtp_pass',''), +('smtp_port','587'), +('smtp_secure','tls'), +('smtp_user',''), +('usdt_bep20_address','0x742d35Cc6634C0532925a3b844Bc454e4438f44e'), +('usdt_erc20_address','0x742d35Cc6634C0532925a3b844Bc454e4438f44e'), +('usdt_protocol','TRC20'), +('usdt_recharge_address',''), +('usdt_trc20_address','TYv9V5J1P1eEwz7y3WqJg9M2yv7f7xXv3x'); +/*!40000 ALTER TABLE `system_settings` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `transactions` +-- + +DROP TABLE IF EXISTS `transactions`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `transactions` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `user_id` int(11) NOT NULL, + `type` varchar(20) NOT NULL, + `amount` decimal(20,8) NOT NULL, + `symbol` varchar(10) NOT NULL, + `status` varchar(20) DEFAULT 'completed', + `created_at` timestamp NULL DEFAULT current_timestamp(), + PRIMARY KEY (`id`) +) ENGINE=InnoDB AUTO_INCREMENT=33 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `transactions` +-- + +LOCK TABLES `transactions` WRITE; +/*!40000 ALTER TABLE `transactions` DISABLE KEYS */; +INSERT INTO `transactions` VALUES +(1,1,'deposit',5000.00000000,'USDT','completed','2026-02-15 15:40:31'), +(2,1,'deposit',1000.00000000,'USDT','completed','2026-02-15 15:45:53'), +(3,2,'recharge',209.64000000,'USDT','completed','2026-02-18 04:46:29'), +(4,2,'recharge',10.00000000,'USDT','completed','2026-02-18 06:16:15'), +(5,2,'recharge',10.00000000,'USDT','completed','2026-02-18 06:33:17'), +(6,2,'recharge',10.00000000,'USDT','completed','2026-02-18 06:38:22'), +(7,2,'recharge',209.64000000,'USDT','completed','2026-02-18 06:54:16'), +(8,2,'withdrawal',9249.28000000,'USDT','pending','2026-02-18 06:54:44'), +(9,2,'recharge',10000.00000000,'USDT','completed','2026-02-18 06:56:45'), +(10,2,'recharge',100.00000000,'USDT','completed','2026-02-18 07:10:11'), +(11,2,'binary_win',108.00000000,'USDT','completed','2026-02-18 08:00:59'), +(12,2,'binary_win',108.00000000,'USDT','completed','2026-02-18 08:00:59'), +(13,2,'binary_win',1080.00000000,'USDT','completed','2026-02-18 08:00:59'), +(14,2,'binary_win',540.00000000,'USDT','completed','2026-02-18 08:00:59'), +(15,2,'binary_win',108.00000000,'USDT','completed','2026-02-18 08:00:59'), +(16,2,'binary_win',108.00000000,'USDT','completed','2026-02-18 08:00:59'), +(17,2,'binary_win',108.00000000,'USDT','completed','2026-02-18 08:01:00'), +(18,2,'binary_win',108.00000000,'USDT','completed','2026-02-18 08:01:00'), +(19,2,'binary_win',108.00000000,'USDT','completed','2026-02-18 08:01:00'), +(20,2,'binary_win',108.00000000,'USDT','completed','2026-02-18 08:01:00'), +(21,2,'binary_win',108.00000000,'USDT','completed','2026-02-18 08:01:00'), +(22,2,'binary_win',108.00000000,'USDT','completed','2026-02-18 08:03:35'), +(23,2,'withdrawal',1000.00000000,'USDT','completed','2026-02-18 08:13:47'), +(24,2,'binary_win',108.00000000,'USDT','completed','2026-02-18 08:38:40'), +(25,2,'recharge',100.00000000,'USDT','completed','2026-02-18 09:05:52'), +(26,2,'withdrawal',100.00000000,'USDT','completed','2026-02-18 09:06:13'), +(27,2,'recharge',209.64000000,'USDT','completed','2026-02-18 09:27:12'), +(28,2,'withdrawal',700.00000000,'USDT','completed','2026-02-18 09:27:38'), +(29,2,'withdrawal',1000.00000000,'USDT','completed','2026-02-18 11:18:24'), +(30,2,'recharge',746.27000000,'USDT','completed','2026-02-18 11:18:57'), +(31,2,'recharge',1000.00000000,'USDT','completed','2026-02-18 11:21:33'), +(32,2,'recharge',746.26865672,'USDT','completed','2026-02-18 11:41:46'); +/*!40000 ALTER TABLE `transactions` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `user_balances` +-- + +DROP TABLE IF EXISTS `user_balances`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `user_balances` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `user_id` int(11) NOT NULL, + `symbol` varchar(10) NOT NULL, + `available` decimal(20,8) DEFAULT 0.00000000, + `frozen` decimal(20,8) DEFAULT 0.00000000, + PRIMARY KEY (`id`), + UNIQUE KEY `user_id` (`user_id`,`symbol`) +) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `user_balances` +-- + +LOCK TABLES `user_balances` WRITE; +/*!40000 ALTER TABLE `user_balances` DISABLE KEYS */; +INSERT INTO `user_balances` VALUES +(1,1,'USDT',6000.00000000,0.00000000), +(6,2,'USDT',11510.17865672,0.00000000); +/*!40000 ALTER TABLE `user_balances` ENABLE KEYS */; +UNLOCK TABLES; + +-- +-- Table structure for table `users` +-- + +DROP TABLE IF EXISTS `users`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!40101 SET character_set_client = utf8mb4 */; +CREATE TABLE `users` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `username` varchar(50) DEFAULT NULL, + `email` varchar(100) DEFAULT NULL, + `password_hash` varchar(255) NOT NULL, + `created_at` timestamp NULL DEFAULT current_timestamp(), + `uid` varchar(20) DEFAULT NULL, + `credit_score` int(11) DEFAULT 80, + `real_name_status` int(11) DEFAULT 0, + `role` varchar(20) DEFAULT 'user', + `total_recharge` decimal(16,4) DEFAULT 0.0000, + `transaction_password` varchar(255) DEFAULT NULL, + `kyc_name` varchar(100) DEFAULT NULL, + `kyc_id_number` varchar(50) DEFAULT NULL, + `kyc_photo_front` varchar(255) DEFAULT NULL, + `kyc_photo_back` varchar(255) DEFAULT NULL, + `kyc_photo_handheld` varchar(255) DEFAULT NULL, + `kyc_status` int(11) DEFAULT 0 COMMENT '0: Unverified, 1: Pending, 2: Verified, 3: Rejected', + `registration_ip` varchar(45) DEFAULT NULL, + `status` enum('normal','frozen') DEFAULT 'normal', + `win_loss_control` tinyint(4) DEFAULT 0 COMMENT '0: normal, 1: win, 2: loss', + `remark` text DEFAULT NULL, + `kyc_rejection_reason` text DEFAULT NULL, + `agent_id` int(11) DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `username` (`username`), + UNIQUE KEY `email` (`email`), + UNIQUE KEY `uid` (`uid`) +) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +/*!40101 SET character_set_client = @saved_cs_client */; + +-- +-- Dumping data for table `users` +-- + +LOCK TABLES `users` WRITE; +/*!40000 ALTER TABLE `users` DISABLE KEYS */; +INSERT INTO `users` VALUES +(2,'ahao8988998','ahao8988@gmail.com','$2y$10$tdT4vIgddq1kh2isoBRIPe4goiZ3X1cbf2l6vtButmyZx71xP527q','2026-02-18 02:56:51','05617613',80,0,'user',0.0000,NULL,'张世豪','123456789','uploads/kyc/2_front_1771391536.jpg','uploads/kyc/2_back_1771391536.jpg','uploads/kyc/2_handheld_1771391536.jpg',2,NULL,'normal',1,'',NULL,NULL); +/*!40000 ALTER TABLE `users` ENABLE KEYS */; +UNLOCK TABLES; +/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; + +/*!40101 SET SQL_MODE=@OLD_SQL_MODE */; +/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; +/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */; +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; +/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; + +-- Dump completed on 2026-02-18 15:07:12 diff --git a/recharge.php b/recharge.php index 49d82a6..4ec25c1 100644 --- a/recharge.php +++ b/recharge.php @@ -1,11 +1,15 @@ query("SELECT setting_key, setting_value FROM system_settings"); $settings = $stmt->fetchAll(PDO::FETCH_KEY_PAIR); @@ -52,18 +56,13 @@ $bep20_addr = $settings['usdt_bep20_address'] ?? '0x742d35Cc6634C0532925a3b844Bc
diff --git a/withdraw.php b/withdraw.php index 910b8af..4d32c68 100644 --- a/withdraw.php +++ b/withdraw.php @@ -1,11 +1,14 @@ prepare("SELECT available FROM user_balances WHERE user_id = ? AND symbol = 'USDT'"); $stmt->execute([$user['id']]); $bal = $stmt->fetch(); @@ -110,14 +113,13 @@ $available = $bal['available'] ?? 0;