diff --git a/GameEngine/Admin/Mods/massmessage.php b/GameEngine/Admin/Mods/massmessage.php index 3006747a..56ac3f94 100644 --- a/GameEngine/Admin/Mods/massmessage.php +++ b/GameEngine/Admin/Mods/massmessage.php @@ -13,7 +13,11 @@ // #299: load CSRF helpers + admin_deny() before the access check below. require_once(__DIR__ . '/../csrf.php'); -session_start(); + +// csrf.php porneste deja sesiunea; un al doilea apel doar genereaza un Notice. +if (session_status() === PHP_SESSION_NONE) { + session_start(); +} include_once("../../config.php"); include_once("../../Database.php"); diff --git a/GameEngine/Automation.php b/GameEngine/Automation.php index c99e147d..44d8e628 100644 --- a/GameEngine/Automation.php +++ b/GameEngine/Automation.php @@ -45,6 +45,23 @@ if ( !defined('AUTOMATION_MANUAL_RUN') ) { } } +/** + * Automation.php presupunea ca apelantul a inclus deja config.php. Cand nu era + * asa (de exemplu inclus din alt context), Database.php dadea eroare fatala: + * Undefined constant "SQL_SERVER" + * + * Il incarcam noi daca lipseste. include_once nu-l aduce de doua ori. + */ +if (!defined('SQL_SERVER')) { + $automationConfig = __DIR__ . '/config.php'; + + if (is_file($automationConfig)) { + include_once($automationConfig); + } elseif (is_file(__DIR__ . '/../config.php')) { + include_once(__DIR__ . '/../config.php'); + } +} + include_once("Database.php"); include_once("Data/buidata.php"); include_once("Data/unitdata.php"); diff --git a/GameEngine/Units.php b/GameEngine/Units.php index 6e77749c..85d30f57 100755 --- a/GameEngine/Units.php +++ b/GameEngine/Units.php @@ -578,7 +578,9 @@ class Units { $j = 1; for ( $i = $start; $i <= $end; $i ++ ) { $units[] = $i; - $amounts[] = $post[ 't' . $j . '' ]; + // Formularul trimite doar casutele completate; o unitate necompletata + // inseamna zero trupe din tipul acela. + $amounts[] = isset($post['t'.$j]) ? $post['t'.$j] : 0; $modes[] = 0; $j ++; } diff --git a/Templates/Plus/10.tpl b/Templates/Plus/10.tpl index 02261b0b..bb003abe 100644 --- a/Templates/Plus/10.tpl +++ b/Templates/Plus/10.tpl @@ -36,11 +36,14 @@ if($session->sit == 0) { // update sesiune $session->gold -= $cost; $_SESSION['gold'] = $session->gold; - // Session nu are proprietatea ->b2; valoarea sta in userarray, de unde - // o citeste si PopulateVar(). Scrierea directa crea o proprietate - // dinamica (depreciata in PHP 8.2) si nu se vedea nicaieri. - $currentB2 = isset($session->userarray['b2']) ? (int) $session->userarray['b2'] : 0; - $session->userarray['b2'] = ($currentB2 > $now ? $currentB2 : $now) + PLUS_PRODUCTION; + // Interogarea de mai sus a prelungit deja b2 in baza de date, atomic. + // Aici doar marcam bonusul ca activ in sesiune, ca pagina sa arate + // corect imediat, fara sa mai citim o data din baza. + // + // Session NU are proprietatea ->b2 (momentul expirarii sta in + // userarray, care e privat). Are insa ->bonus2, indicatorul public + // 0/1 pe care il foloseste restul interfetei. + $session->bonus2 = 1; // LOG pentru a2b2.php mysqli_query($database->dblink, diff --git a/Templates/Plus/11.tpl b/Templates/Plus/11.tpl index 76b66449..5cb85f67 100644 --- a/Templates/Plus/11.tpl +++ b/Templates/Plus/11.tpl @@ -35,11 +35,14 @@ if($session->sit == 0) { if(mysqli_affected_rows($database->dblink) == 1) { $session->gold -= $cost; $_SESSION['gold'] = $session->gold; - // Session nu are proprietatea ->b3; valoarea sta in userarray, de unde - // o citeste si PopulateVar(). Scrierea directa crea o proprietate - // dinamica (depreciata in PHP 8.2) si nu se vedea nicaieri. - $currentB3 = isset($session->userarray['b3']) ? (int) $session->userarray['b3'] : 0; - $session->userarray['b3'] = ($currentB3 > $now ? $currentB3 : $now) + PLUS_PRODUCTION; + // Interogarea de mai sus a prelungit deja b3 in baza de date, atomic. + // Aici doar marcam bonusul ca activ in sesiune, ca pagina sa arate + // corect imediat, fara sa mai citim o data din baza. + // + // Session NU are proprietatea ->b3 (momentul expirarii sta in + // userarray, care e privat). Are insa ->bonus3, indicatorul public + // 0/1 pe care il foloseste restul interfetei. + $session->bonus3 = 1; // LOG pentru a2b2 mysqli_query($database->dblink, diff --git a/Templates/Plus/12.tpl b/Templates/Plus/12.tpl index c8fb47bf..28108e4f 100644 --- a/Templates/Plus/12.tpl +++ b/Templates/Plus/12.tpl @@ -34,11 +34,14 @@ if($session->sit == 0) { if(mysqli_affected_rows($database->dblink) == 1) { $session->gold -= $cost; $_SESSION['gold'] = $session->gold; - // Session nu are proprietatea ->b4; valoarea sta in userarray, de unde - // o citeste si PopulateVar(). Scrierea directa crea o proprietate - // dinamica (depreciata in PHP 8.2) si nu se vedea nicaieri. - $currentB4 = isset($session->userarray['b4']) ? (int) $session->userarray['b4'] : 0; - $session->userarray['b4'] = ($currentB4 > $now ? $currentB4 : $now) + PLUS_PRODUCTION; + // Interogarea de mai sus a prelungit deja b4 in baza de date, atomic. + // Aici doar marcam bonusul ca activ in sesiune, ca pagina sa arate + // corect imediat, fara sa mai citim o data din baza. + // + // Session NU are proprietatea ->b4 (momentul expirarii sta in + // userarray, care e privat). Are insa ->bonus4, indicatorul public + // 0/1 pe care il foloseste restul interfetei. + $session->bonus4 = 1; // LOG pentru a2b2 mysqli_query($database->dblink, diff --git a/Templates/Plus/9.tpl b/Templates/Plus/9.tpl index b9d210fc..99e45661 100644 --- a/Templates/Plus/9.tpl +++ b/Templates/Plus/9.tpl @@ -36,11 +36,14 @@ if($session->sit == 0) { // update sesiune instant $session->gold -= $cost; $_SESSION['gold'] = $session->gold; - // Session nu are proprietatea ->b1; valoarea sta in userarray, de unde - // o citeste si PopulateVar(). Scrierea directa crea o proprietate - // dinamica (depreciata in PHP 8.2) si nu se vedea nicaieri. - $currentB1 = isset($session->userarray['b1']) ? (int) $session->userarray['b1'] : 0; - $session->userarray['b1'] = ($currentB1 > $now ? $currentB1 : $now) + PLUS_PRODUCTION; + // Interogarea de mai sus a prelungit deja b1 in baza de date, atomic. + // Aici doar marcam bonusul ca activ in sesiune, ca pagina sa arate + // corect imediat, fara sa mai citim o data din baza. + // + // Session NU are proprietatea ->b1 (momentul expirarii sta in + // userarray, care e privat). Are insa ->bonus1, indicatorul public + // 0/1 pe care il foloseste restul interfetei. + $session->bonus1 = 1; // LOG pentru a2b2.php mysqli_query($database->dblink, diff --git a/Templates/Profile/overview.tpl b/Templates/Profile/overview.tpl index aac3f2b5..7dbc59ae 100644 --- a/Templates/Profile/overview.tpl +++ b/Templates/Profile/overview.tpl @@ -151,7 +151,12 @@ if ($displayarray['access'] == BANNED) {
Setup wizard • v.10.0 Full Refactor&Redesign
Setup wizard • v.11.0 Full Refactor&Redesign