Dokumentáció · Aktuális build

PrizeX-dokumentáció

Minden, amire a PrizeX telepítéséhez, beállításához és üzemeltetéséhez szükséged van — ez az önhosztolt PHP platform hajtja az aukciókat, a lottót, a mystery boxokat, a játéktermi játékokat, a több eladós boltot és a pénztárca-/érmegazdaságot. Ez az oldal a ténylegesen kiszállított kódbázist tükrözi, nem egy marketinges összefoglalót.

PHP 7.4+ MySQL / MariaDB Composer 38 fizetésiátjáró-bővítmény 5 áruházi sablon

Mi az a PrizeX

A PrizeX egy PHP-alapú nyeremény-, játék- és piactérplatform: aukciók, lottó, mystery boxok, játéktermi játékok, több eladós webáruház és pénztárca-/érmegazdaság — mindez egyetlen önhosztolt alkalmazásban. Bővítmény- és sablonarchitektúrára épül, admin felülettel és 38 fizetésiátjáró-bővítménnyel, amelyek lefedik a kártyás, pénztárcás, kriptós és regionális szolgáltatókat, valamint a rendszermag által előre felvett 3 manuális fizetési móddal.

Nincs SaaS-függőség: a saját tárhelyedre telepíted, tiéd az adatbázis, és a licenc élethosszig tartó frissítéseket ad. Minden vertikum (aukciók, lottó, mystery boxok, játékok, bolt) egymástól függetlenül be- és kikapcsolható az admin felületről — egy friss telepítés futhat egyetlen vertikumra szűkített termékként vagy a teljes csomagként is.

Architektúra
Bővítmény- és sablonalapú

A rendszermag kódja soha nem függ szorosan egyetlen bővítménytől sem. Minden vertikum, fizetési átjáró és közösségi belépés egy-egy bővítmény a plugins/ könyvtárban, amely aktiválható, deaktiválható vagy törölhető anélkül, hogy az oldal többi része elromlana.

Adatok
MySQL / MariaDB, nyers mysqli

Táblaelőtag: tbl_, nincs ORM, többnyire prepared statementek. Minden bővítmény a sajátjaként birtokolja és maga migrálja a tábláit egy idempotens db_delta() telepítőn keresztül.

Mire van szükség a futtatásához

A PrizeX elfut szokásos megosztott tárhelyen vagy VPS-en — az URL-átírásra képes webszerveren túl semmilyen különleges szerverbeállítás nem kell.

Futtatókörnyezet
PHP 7.4+
GD- és cURL-kiterjesztés
Adatbázis
MySQL / MariaDB
A migrációkhoz MariaDB kell*
Függőségek
Composer
PHP-csomagkezelő
Webszerver
Apache / LiteSpeed
nginx a mintakonfigurációval támogatott

* A database/migrations/ könyvtár több fájlja a csak MariaDB-ben elérhető ADD COLUMN IF NOT EXISTS kiterjesztést használja. A sima MySQL 8.0/8.4 visszautasítja — adatbázisnak fejlesztésben és éles környezetben egyaránt MariaDB-t használj.

Friss telepítés beüzemelése

Friss telepítéshez nincs varázsló — közvetlenül importálod a sémát, és beállítod a környezeti fájlt.

  1. Telepítsd a PHP-függőségeket:
    composer install
  2. Másold le a környezeti sablonfájlt, és töltsd ki az adatbázis hozzáférési adatait:
    cp .env.example .env
  3. Importáld a database/production.sql fájlt abba az adatbázisba, amelyet a .env fájlban megadtál — ez hozza létre a teljes sémát.
  4. Cseréld le az előre felvett admin fiókot (lásd az alábbi figyelmeztetést), majd lépj be a /admin/ címen.
Ne az előre felvett fiókkal lépj be. A database/production.sql tartalmaz egy tbl_admin sort (admin@wowcodes.in), amelynek jelszóhashe minden telepítésen ugyanaz. Élesítés előtt töröld, és vedd fel a sajátodat:
php -r "echo password_hash('your-password', PASSWORD_BCRYPT), \"\n\";"
DELETE FROM tbl_admin; INSERT INTO tbl_admin (username, email, password, image, status, permission_settings) VALUES ('yourname', 'you@example.com', '<hash from the command above>', '', 1, 1);

Helyi fejlesztéshez a beépített PHP-szerver Apache nélkül is működik: php -S localhost:8000 router.php — vedd figyelembe, hogy ez a szerver teljesen figyelmen kívül hagyja a .htaccess fájlt, ezért a router.php kézzel valósítja meg ugyanazokat az útvonalszabályokat (lásd: Webszerver beállítása).

Környezeti változók

Minden környezetfüggő beállítás a .env fájlban van, amelyet a vlucas/phpdotenv tölt be. Másold a .env.example fájlt .env néven (ezt a git figyelmen kívül hagyja), és környezetenként add meg a valódi értékeket — a séma importálása előtt legalább az adatbázis hozzáférési adatait.

Az egész oldalra vonatkozó, nem környezetfüggő beállítások (alkalmazásnév, pénznem, aktív bővítmények, aktív sablon és a vertikumonkénti kapcsolók) az adatbázisban, a tbl_settings táblában vannak, és nem fájlokban, hanem az admin felületen kezeled őket.

Webszerver beállítása

Az útvonal- és biztonsági szabályokat — beszédes URL-ek, a .env/connection.php/naplófájlok közvetlen elérésének tiltása, és annak megakadályozása, hogy a feltöltött tartalom PHP-ként fusson le — a projekt egészében a .htaccess fájlok tartalmazzák. Az Apache és a LiteSpeed/OpenLiteSpeed natívan olvassa őket.

nginx alatt használd az nginx.conf.example fájlt, amely mindegyik szabályt leképezi egy nginx server{} blokkba — a server_name, a root és a PHP-FPM socket értékét igazítsd a saját környezetedhez.

Tartsd szinkronban ezt a hármat. A .htaccess (éles), a router.php (helyi php -S fejlesztői szerver) és az nginx.conf.example (nginx) egymástól függetlenül valósítja meg ugyanazokat az útvonalszabályokat. Ha új beszédes URL-es útvonalat veszel fel, mindhármat frissítened kell.

Kérésarchitektúra

Minden áruházi oldal (index.php, item.php, …) az includes/header.php fájlon keresztül indul el, ebben a sorrendben:

Geolokáció és nyelv connection.php themes.php hooks.php plugins.php routes.php menus.php assets.php plugins_load()

A connection.php elindítja a munkamenetet, a .env hozzáférési adataival mysqli-kapcsolatot nyit, a tbl_settings tartalmát olyan konstansokba tölti be, mint az APP_NAME és a CURRENCY, majd belépteti az aktuális felhasználót, és rögzít egy eszközujjlenyomat-sort. A plugins_load() elindítja az összes aktív bővítményt, és elsüti a plugins_loaded hookot — ezen a ponton derül ki, hogy valójában mely vertikumok aktívak, ezért ellenőrzi utána a header.php a régi beállításkapcsolókat (bolt, több eladós mód, aukció, lottó) a bővítmények tényleges aktív állapotához képest.

Az admin felület nem duplikálja ezt az indítási folyamatot — az admin/includes/connection.php beállítja az adminra jellemző munkamenet- és hibakezelést, majd beemeli ugyanazt a gyökérben lévő includes/connection.php fájlt.

Bővítményrendszer

Egy bővítmény nem más, mint a plugins/<slug>/plugin.php — a fájl elején lévő megjegyzésben tárolt metaadat, amelyet a rendszer a fájl futtatása nélkül olvas ki —, plusz egy opcionális plugin.json a részletesebb katalógusadatokhoz. Az aktív bővítmények JSON-tömbként a tbl_settings.active_plugins mezőben vannak.

  • A táblák tulajdonlása — minden bővítmény saját includes/schema.php fájlt definiál, amely aktiváláskor fut le, és az idempotens db_delta() segédfüggvényt használja (CREATE TABLE IF NOT EXISTS + kizárólag bővítő ALTER TABLE ADD COLUMN). Egy bővítmény soha nem nyúl egy másik bővítmény tábláihoz.
  • A regiszterek töltődnek be előbb — az add_admin_page, az add_route, az add_cron_job, az add_api_route és a register_module mind definiálva van, mielőtt bármelyik bővítmény betöltődne, így egy bővítmény legfelső szintű hívásai akkor sem okoznak végzetes hibát, ha a bővítmény végül inaktív marad.
  • Tiszta eltávolítás — a bővítmény törlésekor lefut az uninstall.php fájlja, és eltűnik a mappája; a plugins/<slug>/ könyvtáron kívül semminek nem szabad kötelezően megkövetelnie a fájljait, így az oldal többi része a bővítmény nélkül is tovább működik.

Sablonrendszer

Egy sablon az assets/themes/<slug>/ könyvtárban él — manifest.php, theme.css, a sablon hookjaihoz functions.php, és opcionálisan egy components/ mappa. Az aktív sablont a tbl_settings.active_theme tárolja; ha nincs beállítva, a tartalék az editorial.

A komponensek feloldása ebben a sorrendben történik: először az aktív sablon saját components/ mappája, aztán a bővítmény register_module() hívásában megadott komponenskönyvtára, végül a közös, gyökérben lévő components/. A gyakorlatban ez azt jelenti, hogy a közös alapváltozat egyszer szerepel a components/ mappában, és bármelyik sablon — vagy aktív vertikumbővítmény — felülírhat egy adott komponensútvonalat a saját másolatával.

Adatbázis

Táblaelőtag: tbl_, nyers mysqli, többnyire prepared statementek. Az SQL-fájlok, mérvadóság szerinti sorrendben:

  • database/core-schema.sql — kézzel karbantartva, kizárólag a rendszermag tábláival; a vertikumok és a bővítmények tábláit szándékosan nem tartalmazza.
  • database/production.sql — generált fájl (az alapséma + minden bővítmény saját telepítőrutinja, egy üres próbaadatbázisból kimentve). Friss telepítéskor ezt importálod.
  • database/sandbox.sql — demó- és kezdőadatok helyi fejlesztéshez.
  • database/migration.sql — összevont, idempotens frissítőszkript a már meglévő telepítésekhez.
  • database/migrations/<slug>/up.sql (+ down.sql, ahol visszafordítható) — migrációnként egy-egy fájl.

Modulok

Minden modul ugyanabban a telepítésben érkezik, és egymástól függetlenül kapcsolható be-ki az admin felületről.

Aukciók

Élő licitálás több eladós eladói portállal és jutalékmotorral. Alapbővítmény: plugins/auction.

auction-anti-snipeauction-autobidderauction-buy-nowauction-notify-meauction-premiumauction-shippingauction-unlock

Lottó

Szelvényes sorsolások állítható időzítéssel, nyereményekkel és nyertesértesítésekkel. Alapbővítmény: plugins/lottery.

lottery-live-tickerlottery-print-ticket

Mystery box

Szabadon összeállítható nyereményalapok felfedő animációkkal — a felhasználó megvesz egy dobozt, és azonnal látja, mit nyert. Bővítmény: plugins/mystery-box.

Játékok és jutalmak

Egy játéktermi játékcsomag a games/ könyvtárban, plusz aktivitás- és keresetnövelő bővítmények:

2048bamboo-fortuneclick-speedemoji-funhex-burstodd-one-outword-search
earn-gamesearn-daily-bonusearn-offerwallsearn-watch-earn

Bolt és piactér

Több eladós webáruházréteg akciós és értékesítéstámogató eszközökkel. Alapbővítmények: plugins/shop, plugins/multivendor.

couponsgift-cardsshop-abandoned-cartshop-b2bshop-flash-salesshop-merchandisingshop-opsshop-shippingdigital-assetsesim-store

Pénztárca, érmék és befektetés

Platformszintű pénztárca, amelyen minden modul osztozik.

finance-coin-pricingfinance-exchange-ratesfinance-tax-settingswallet-transferinvestwithdrawals

Ajánlások és jutalmak

referralsreferrals-multilevel

Belépés, bizalom és megfelelőség

google-loginfacebook-loginapple-loginemail-otprecaptchafraud-preventionrolesmembershipuser-impersonation

Segédeszközök

blogcachetawk-chatinsightsmanual-gateway-buildermobile-app-settings

Admin felület

Az admin felület az admin/ könyvtárban él, és nem duplikálja az áruház indítási folyamatát — beállítja az adminra jellemző munkamenet- és hibakezelést, majd beemeli ugyanazt a gyökérben lévő includes/connection.php fájlt. Az oldalak az add_admin_page() függvénnyel regisztrálnak, amely gondoskodik az oldalsávi menüpontról, a jogosultság-ellenőrzésről, a CSRF-védelemről és a bejelentkezési keretről; a csak adminra érvényes JSON-műveletek az add_admin_ajax() függvénnyel regisztrálnak, és az admin/ajax.php?action=<slug> címen keresztül futnak.

Katalógus és tartalom

Tételek, bannerek, oldalak, menük, blog.

Fizetések

Automatikus és manuális átjárók kezelése, manuális fizetések ellenőrzése, kifizetési exportok.

Felhasználók és eladók

Felhasználói csoportok, szerepkörök, eladói adatok, felhasználó nevében való belépés.

Riportok és naplók

Tranzakció-, rendelés- és felhasználóexportok, cron-naplók, hibakövetés, admin tevékenységnaplók.

Marketing

E-mail-kampányok, sablonok, hírlevelek, push értesítések, értesítési napló.

Bővítmények, sablonok és SEO

Bővítmények és sablonok aktiválása/deaktiválása, oldalankénti SEO-beállítások, az egész oldalra vonatkozó beállítások.

Áruházi sablonok

Öt sablon érkezik az assets/themes/ könyvtárban, telepítésenként átválthatóan az admin felületről. Minden sablon a saját components/ mappájában tartja a közös komponensek saját másolatát.

Classic

Egyszerű, modern megjelenés fehér kártyákkal és lágy árnyékokkal — biztonságos, sokoldalú választás szinte bármilyen bolthoz.

Editorial

Letisztult, magazinos megjelenés meleg papírtónusokkal és határozott tipográfiával, igényes és bizalomkeltő áruházhoz.

Alapértelmezett tartaléksablon
Casino

Merész, luxusos sötét sablon aranyszínű kiemelésekkel — izgalmas, prémium hangulatra tervezve.

Bazaar

Meleg, gazdagon díszített megjelenés a hagyományos piacterek ihletésével, jobbról balra író nyelvek támogatásával.

Halloween

Kísérteties, ünnepi szezonális megjelenés — mélylila háttér, izzó töknarancs kiemelésekkel.

Fizetési átjárók

A 38 automatikus átjáró bővítményekben él — mindegyiknek saját plugins/gateway-<slug>/ mappája van, és az add_payment_gateway() hívással regisztrálja magát a rendszermagban. Ha aktiválsz egyet, az egyszerűen működik; a fizetési elosztóban (payment_processor.php) semmi nincs konkrét átjáróra huzalozva.

Kártyás és globális szolgáltatók
2CheckoutAmazon PayAuthorize.NetBlueSnapCheckout.comMollieNMIPayPalPayeerSkrillStripeVenmoWise
Regionális és helyi szolgáltatók
AamarpayBkashCashfreeCashmaalFlutterwaveGoCardlessInstamojoInTouchMercado PagoMidtransM-PesaNagadOpenPixPaystackPaytmPayURazorpaySSLCommerz
Kriptovaluta
BinanceBlockchain.comCoinbase CommerceCoinGateCoinPaymentsMoonPayNOWPayments
Manuális (utasítás- vagy QR-alapú)
UPIBank TransferPayTM QR

A 3 manuális fizetési mód a rendszermagból előre felvett, gateway_type = 'manual' sor, amelyekhez nincs beállítandó init/verify kód — csak fizetési utasításokat vagy QR-kódot jelenítenek meg. A manual-gateway-builder bővítménnyel az admin további egyedi manuális fizetési módokat vehet fel anélkül, hogy a kódhoz nyúlna.

Néhány átjáró (Stripe, Razorpay, Midtrans, Venmo) egy render hookot is regisztrál azokhoz a fizetési folyamatokhoz, amelyekhez kliensoldali JS kell — például a Stripe Checkout indításához, vagy egy olyan Razorpay-/Midtrans-/Braintree-SDK-hoz, amelynek előbb szerveroldalon létrehozott rendelésazonosítóra vagy tokenre van szüksége. Az összes többi átjáró mindenféle plusz rendszermagbeli huzalozás nélkül működik.

API- és AJAX-rétegek

  • api/v1/ — JWT-hitelesítésű REST API a mobilalkalmazásnak és a külső felhasználóknak. Az api/v1/middleware/*.php ellenőrzi az Authorization: Bearer <token> fejlécet. A bővítmények az add_api_route() hívással veszik fel a saját végpontjaikat.
  • ajax/ — munkamenet-sütivel hitelesített belső AJAX az áruház saját JS-kódjának (kosár, kuponok, értesítések). Nincs tokenréteg — a connection.php által létrehozott PHP-munkamenetre támaszkodik.
  • A gyökérben lévő, laza api/ — vegyes, nem verziózott végpontok, például a geo_location.php, az exchange-rate.php és az offerwall_postback.php.

Mobilalkalmazás

A mobile/ egy külön Capacitor + Ionic projekt — WebView-burok az élő oldal köré, nem önálló SPA, és nem is pusztán az api/v1 fogyasztója. A capacitor.config.ts fájljában a server.url a te domainedre mutat. Saját package.json fájlja van, és nem a projekt gyökeréből épül:

cd mobile npm run sync npm run open:ios npm run open:android

Frissítés és migrációk

Készíts biztonsági mentést, mielőtt éles adatbázison lefuttatnád a database/migration.sql vagy bármelyik database/migrations/<slug>/up.sql fájlt:

mysqldump --single-transaction -u<user> -p<pass> <db> > pre-deploy-$(date +%Y%m%d-%H%M%S).sql

A legtöbb migrációhoz tartozik egy down.sql, amely pontosan az adott változtatást vonja vissza. Néhánynál, amely nem csak szerkezetet ad hozzá, hanem a meglévő adatokat alakítja át, a down.sql ehelyett csak azt dokumentálja, miért nem csinál semmit — ezeknél az élesítés előtti mentésből állítsd vissza az adatbázist, ha vissza kell lépned.

Biztonsági tudnivalók

  • Az importálás után azonnal cseréld le az előre felvett admin hozzáférési adatokat (lásd: Telepítés).
  • A .env, a connection.php és a naplófájlok közvetlen HTTP-elérését a mellékelt .htaccess- és nginx-szabályok tiltják — ne vedd ki ezeket a szabályokat.
  • A feltöltött tartalmat úgy szolgáljuk ki, hogy az ne futhasson le PHP-ként; ezt a webszerver konfigurációja kényszeríti ki, nem az alkalmazás.
  • A fizetési átjárók hozzáférési adatait átjárónként az admin felületen állítod be, és a szerveroldalon tároljuk — soha nem kerülnek ki az áruház felületére.

Tesztelés

Nincs PHPUnit-tesztcsomag. A composer test a bin/run-probes.php szkriptet futtatja, amely összegyűjti az includes/_probes/ könyvtárban és az egyes bővítmények saját _probes/ mappájában lévő összes probe_*.php fájlt, mindegyiket külön CLI-alfolyamatként futtatja, és ellenőrzi a kilépési kódját.

composer test # run every probe php plugins/<slug>/_probes/probe_*.php # run a single probe directly php bin/run-probes.php --all # also run destructive probes (skipped by default)

Gyakori kérdések

Nem. Az aukciók, a lottó, a mystery boxok, a játékok és a bolt/piactér mind önálló bővítmény — csak azt kapcsold be, amire az üzletednek szüksége van, a többit pedig később, újratelepítés nélkül is bekapcsolhatod.
Igen. A bővítmény törlésekor lefut a saját eltávolítója, és csak a saját tábláit és fájljait szedi le — az oldal alapvető működése eleve úgy készült, hogy soha ne függjön egyetlen konkrét bővítmény meglététől.
MariaDB-t. Néhány migrációs fájl olyan, csak MariaDB-ben létező SQL-szintaxist használ, amelyet a sima MySQL 8 visszautasít — fejlesztésben és éles környezetben egyaránt MariaDB-t használj.
38 automatikus átjáró-bővítményt (kártyás, pénztárcás, kriptós és regionális szolgáltatók), plusz 3 manuális fizetési módot — UPI, banki átutalás és PayTM QR —, amelyeket az alapséma hoz létre. A Manual Gateway Builder bővítménnyel kódolás nélkül vehetsz fel további manuális módokat.

Támogatás és források

Elakadtál, vagy olyasmire van szükséged, amit ez az oldal nem fed le?