=====================================================
 রিয়েল এক্সচেঞ্জ — InfinityFree সেটআপ গাইড (PHP + MySQL)
=====================================================

১) InfinityFree-তে অ্যাকাউন্ট খুলে "Create Account" থেকে একটি ফ্রি সাবডোমেইন নিন (যেমন: yoursite.rf.gd)।

২) Client Area > আপনার হোস্টিং > "MySQL Databases" থেকে নতুন ডাটাবেস বানান।
   এখান থেকে পাবেন: MySQL Host Name (sqlXXX.infinityfree.com), Database Name, Username।
   পাসওয়ার্ড = আপনার হোস্টিং অ্যাকাউন্টের পাসওয়ার্ড (vPanel password)।

৩) "phpMyAdmin" খুলে ডাটাবেস সিলেক্ট করুন > Import > এই প্যাকেজের install.sql আপলোড করে Go চাপুন।

৪) includes/config.php খুলে DB_HOST, DB_NAME, DB_USER, DB_PASS বসান। চাইলে ক্রেডিট রেট/লিমিটও বদলাতে পারেন।

৫) File Manager (অথবা FTP) দিয়ে সব ফাইল htdocs ফোল্ডারে আপলোড করুন
   (index.php সরাসরি htdocs-এর ভেতরে থাকবে, htdocs/exchange/ এর ভেতরে নয় — না হলে লিংক পাল্টে যাবে)।

৬) সাইটে গিয়ে নিজে রেজিস্ট্রেশন করুন, তারপর phpMyAdmin > SQL ট্যাবে চালান:
      UPDATE users SET role='admin' WHERE username='আপনার_ইউজারনেম';
   এরপর মেনুতে "অ্যাডমিন" দেখা যাবে।

৭) (ঐচ্ছিক) InfinityFree থেকে ফ্রি SSL (Let's Encrypt) চালু করুন যেন সাইট https:// এ চলে।

৮) includes/config.php-তে BKASH_NUMBER, NAGAD_NUMBER, ROCKET_NUMBER-এ আপনার ব্যক্তিগত নম্বর বসান
   (একই Personal নম্বরে Send Money ও এজেন্টের মাধ্যমে Cash In — দুটোই নেওয়া যাবে, আলাদা Agent নম্বর লাগবে না)।

--------------------------------------------------
ক্রেডিট রিচার্জ (বিকাশ/নগদ/রকেট) কিভাবে কাজ করে
--------------------------------------------------
ব্যক্তিগত (Personal) bKash/Nagad/Rocket নম্বরে কোনো অটোমেটেড ভেরিফিকেশন API নেই — এটা শুধু
নিবন্ধিত Merchant অ্যাকাউন্টে পাওয়া যায়। তাই এই সাইটে আধা-স্বয়ংক্রিয় (semi-automated) সিস্টেম
রাখা হয়েছে:
  ১. ইউজার buy_credits.php পেজে আপনার নম্বর দেখে Send Money করে
  ২. ট্রানজেকশন আইডি ও পরিমাণ ফর্মে জমা দেয় (এটা সাথে সাথে জমা হয়)
  ৩. আপনি bKash/Nagad/Rocket অ্যাপ খুলে টাকা সত্যিই এসেছে কিনা মিলিয়ে দেখেন
  ৪. অ্যাডমিন প্যানেল > "রিচার্জ" ট্যাবে গিয়ে এক ক্লিকে অনুমোদন দিলে ক্রেডিট তৎক্ষণাৎ যোগ হয়ে যায়
একই ট্রানজেকশন আইডি দুইবার ব্যবহার করা যায় না (ডাটাবেসে ইউনিক কনস্ট্রেইন্ট আছে)।
১ টাকায় কত ক্রেডিট, সর্বনিম্ন/সর্বোচ্চ রিচার্জ — সবই config.php-তে বদলানো যায়।

--------------------------------------------------
কিভাবে কাজ করে
--------------------------------------------------
- ইউজার টাস্ক করে ক্রেডিট আয় করে; সেই ক্রেডিট খরচ করে নিজের ক্যাম্পেইন চালায়।
- ক্যাম্পেইন বানানোর সময় ক্রেডিট escrow হিসেবে কাটা হয়; কাজ অনুমোদিত হলে কর্মী পায়।
- মালিক রিভিউ না করলে ৪৮ ঘণ্টা পর অটো-অ্যাপ্রুভ। রিজেক্ট করলে কর্মী ২৪ ঘণ্টায় বিবাদ জানাতে পারে;
  অ্যাডমিন সিদ্ধান্ত দেন। বিবাদ না এলে ক্রেডিট মালিকের কাছে ফেরত যায়।
- InfinityFree-তে Cron Job নেই, তাই সময়-ভিত্তিক কাজগুলো ("lazy cron") পেজ লোডের সময় ৫ মিনিট পরপর চলে।

সুরক্ষা ব্যবস্থা: পাসওয়ার্ড হ্যাশ, CSRF টোকেন, প্রিপেয়ার্ড স্টেটমেন্ট (SQL Injection সুরক্ষা), XSS এস্কেপ,
লগইন ব্রুট-ফোর্স লিমিট, প্রতি IP-তে অ্যাকাউন্ট লিমিট, দৈনিক টাস্ক লিমিট, ন্যূনতম অপেক্ষার সময়,
প্ল্যাটফর্ম-লিংক ভ্যালিডেশন, রেফারেল বোনাস শুধু প্রথম অনুমোদিত কাজের পর।

--------------------------------------------------
জানা দরকার
--------------------------------------------------
- সাইট নিজে থেকে যাচাই করতে পারে না কেউ সত্যিই ফলো/লাইক করেছে কিনা; যাচাই করে টাস্কের মালিক
  (এবং বিবাদে অ্যাডমিন)। ফেসবুক/ইউটিউব/টিকটকের API ব্যবহার করে অটো-ভেরিফাই করতে ওই প্ল্যাটফর্মের
  ডেভেলপার অ্যাপ অনুমোদন লাগে এবং ফ্রি হোস্টিংয়ে তা সুবিধাজনক নয়।
- এসব প্ল্যাটফর্মের নীতিতে কৃত্রিম এনগেজমেন্ট বিনিময় নিষিদ্ধ থাকতে পারে; তাই ব্যবহারকারীদের
  নিজের মূল অ্যাকাউন্ট ঝুঁকিতে না ফেলার পরামর্শ দিন।
- InfinityFree-তে ইমেইল পাঠানো (PHP mail) সীমিত, তাই ইমেইল ভেরিফিকেশন/পাসওয়ার্ড রিসেট এই ভার্সনে নেই।
- ফ্রি হোস্টিংয়ে দৈনিক হিট লিমিট আছে; ইউজার বাড়লে পেইড হোস্টিংয়ে যাওয়া লাগবে।
