Some important fix

This commit is contained in:
novgorodschi catalin
2026-08-10 10:34:49 +03:00
parent da58de16b4
commit d325fce01f
9 changed files with 64 additions and 24 deletions
+5 -1
View File
@@ -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");
+17
View File
@@ -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");
+3 -1
View File
@@ -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 ++;
}
+8 -5
View File
@@ -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,
+8 -5
View File
@@ -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,
+8 -5
View File
@@ -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,
+8 -5
View File
@@ -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,
+6 -1
View File
@@ -151,7 +151,12 @@ if ($displayarray['access'] == BANNED) {
<td>
<?php
$tribeArrays = [TRIBE1, TRIBE2, TRIBE3, TRIBE4, TRIBE5, TRIBE6, TRIBE7, TRIBE8, TRIBE9];
echo $tribeArrays[$displayarray['tribe'] - 1];
// Un cont fara trib (tribe = 0, de exemplu conturile de sistem sau unul
// inca neinregistrat complet) dadea indexul -1.
$tribeIndex = (int) ($displayarray['tribe'] ?? 0) - 1;
echo isset($tribeArrays[$tribeIndex]) ? $tribeArrays[$tribeIndex] : '';
?>
</td>
</tr>
+1 -1
View File
@@ -68,7 +68,7 @@ document.addEventListener('DOMContentLoaded',function(){
<path d="M26 32l5 5 11-11" stroke="white" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"/>
<defs><linearGradient id="g" x1="8" y1="4" x2="56" y2="58"><stop stop-color="#22c55e"/><stop offset="1" stop-color="#0f172a"/></linearGradient></defs>
</svg>
<div><h1>TravianZ Installation</h1><p>Setup wizard v.10.0 Full Refactor&Redesign</p></div>
<div><h1>TravianZ Installation</h1><p>Setup wizard v.11.0 Full Refactor&Redesign</p></div>
`;
var wrap = document.querySelector('.wrapper');
if(wrap) wrap.parentNode.insertBefore(h, wrap);