╔══════════════════════════════════════════════════════════════════════════╗ ║ 🔧 QUICK FIX GUIDE - حفظ التوكن ║ ╚══════════════════════════════════════════════════════════════════════════╝ 📍 الموقع: دالة activate_new_code_enhanced في ملف API-V6APK.php ┌──────────────────────────────────────────────────────────────────────────┐ │ BEFORE (قبل التعديل) │ └──────────────────────────────────────────────────────────────────────────┘ // Generate token $token = md5(uniqid() . $username . time()) . base64_encode(random_bytes(64)); // Default allowed formats ← ❌ التوكن لم يُحفظ! $allowed_formats = ["m3u8", "ts"]; ┌──────────────────────────────────────────────────────────────────────────┐ │ AFTER (بعد التعديل) │ └──────────────────────────────────────────────────────────────────────────┘ // Generate token $token = md5(uniqid() . $username . time()) . base64_encode(random_bytes(64)); // ⭐ أضف هذا الكود هنا ⭐ // ════════════════════════════════════════════════════════════════════ $token_expiry_days = isset($_CFG['token_expiry_days']) ? intval($_CFG['token_expiry_days']) : 7; $token_created = time(); $token_expires = $token_created + (86400 * $token_expiry_days); $token_data = [ 'user_id' => $xtID, 'token' => $token, 'created' => $token_created, 'expires' => $token_expires, 'ip' => $this->ip(), 'user_agent' => $_SERVER['HTTP_USER_AGENT'] ?? 'Unknown' ]; try { $this->insert('user_tokens', $token_data); debug_log("Token saved for user: " . $username); } catch (Exception $e) { debug_log("Error saving token: " . $e->getMessage()); } // ════════════════════════════════════════════════════════════════════ // Default allowed formats ← ✅ التوكن تم حفظه! $allowed_formats = ["m3u8", "ts"]; ╔══════════════════════════════════════════════════════════════════════════╗ ║ 📋 خطوات التطبيق ║ ╚══════════════════════════════════════════════════════════════════════════╝ 1️⃣ افتح الملف: /var/www/html/iptv/V6APK/API-V6APK.php 2️⃣ ابحث عن الدالة: activate_new_code_enhanced 3️⃣ ابحث عن السطر: $token = md5(uniqid() . $username . time()) . base64_encode(random_bytes(64)); 4️⃣ أضف الكود الجديد بعد هذا السطر مباشرة 5️⃣ احفظ الملف 6️⃣ اختبر التفعيل: php /var/www/html/iptv/activate_and_get_token.php 225666426500 8c:fd:f0:00:7f:13 ╔══════════════════════════════════════════════════════════════════════════╗ ║ 🧪 التحقق من النجاح ║ ╚══════════════════════════════════════════════════════════════════════════╝ ✅ تحقق من قاعدة البيانات: mysql -u root -p1231231 xtream_iptvpro -e " SELECT t.token, u.username, FROM_UNIXTIME(t.created) as created FROM user_tokens t JOIN users u ON t.user_id = u.id WHERE u.username = '225666426500';" ✅ يجب أن ترى التوكن محفوظاً! ╔══════════════════════════════════════════════════════════════════════════╗ ║ ⚡ نسخة سريعة للنسخ ║ ╚══════════════════════════════════════════════════════════════════════════╝ // Save token to database $token_expiry_days = isset($_CFG['token_expiry_days']) ? intval($_CFG['token_expiry_days']) : 7; $token_created = time(); $token_expires = $token_created + (86400 * $token_expiry_days); $token_data = [ 'user_id' => $xtID, 'token' => $token, 'created' => $token_created, 'expires' => $token_expires, 'ip' => $this->ip(), 'user_agent' => $_SERVER['HTTP_USER_AGENT'] ?? 'Unknown' ]; try { $this->insert('user_tokens', $token_data); debug_log("Token saved for user: " . $username); } catch (Exception $e) { debug_log("Error saving token: " . $e->getMessage()); } ╔══════════════════════════════════════════════════════════════════════════╗ ║ 📞 المساعدة ║ ╚══════════════════════════════════════════════════════════════════════════╝ 📁 ملفات مفيدة: - activate_new_code_enhanced_FIXED.php (الكود الكامل المُصلح) - TOKEN_SAVE_FIX.md (دليل مفصّل) - test_token.php (اختبار التوكن) 🔧 سكريبتات مفيدة: - activate_and_get_token.php (تفعيل واختبار) - test_token.php (اختبار توكن) - add_token_manually.php (إضافة توكن يدوياً) ═══════════════════════════════════════════════════════════════════════════ انتهى الدليل ═══════════════════════════════════════════════════════════════════════════