mirror of
https://github.com/Shadowss/TravianZ.git
synced 2026-06-28 16:44:24 +00:00
fb225b562f
The post-delete admin-log block referenced variables that were never defined ($admid/$adminID/$medalid/$uid), so on PHP 8.1+ (mysqli throws on error) the malformed INSERT raised an uncaught mysqli_sql_exception → HTTP 500 after the medal was already deleted. Use the correct ids ($admid from session, $uid from POST), look up the target player's username (escaped), and redirect to the sanitized $uid. Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
51 lines
2.4 KiB
PHP
Executable File
51 lines
2.4 KiB
PHP
Executable File
<?php
|
|
|
|
#################################################################################
|
|
## -= YOU MAY NOT REMOVE OR CHANGE THIS NOTICE =- ##
|
|
## --------------------------------------------------------------------------- ##
|
|
## Filename medals.php ##
|
|
## Developed by: aggenkeech ##
|
|
## License: TravianZ Project ##
|
|
## Copyright: TravianZ (c) 2010-2025. All rights reserved. ##
|
|
## ##
|
|
#################################################################################
|
|
if (!isset($_SESSION)) session_start();
|
|
if($_SESSION['access'] < 9) die("Access Denied: You are not Admin!");
|
|
|
|
// Issue #139: this Mod is POSTed to directly, so it must verify the CSRF token
|
|
// itself (it does not go through admin.php's central csrf_verify()).
|
|
require_once(__DIR__ . '/../csrf.php');
|
|
csrf_verify();
|
|
|
|
include_once("../../Account.php");
|
|
|
|
// go max 5 levels up - we don't have folders that go deeper than that
|
|
$autoprefix = '';
|
|
for ($i = 0; $i < 5; $i++) {
|
|
$autoprefix = str_repeat('../', $i);
|
|
if (file_exists($autoprefix.'autoloader.php')) {
|
|
// we have our path, let's leave
|
|
break;
|
|
}
|
|
}
|
|
|
|
include_once($autoprefix."GameEngine/Database.php");
|
|
|
|
if(isset($_POST['medalid']) && !empty($_POST['medalid']) && is_numeric($_POST['medalid'])){
|
|
$medalID = (int) $_POST['medalid'];
|
|
mysqli_query($database->dblink, "UPDATE ".TB_PREFIX."medal set del = 1 WHERE id = ".$medalID."");
|
|
}
|
|
elseif(isset($_POST['userid']) && !empty($_POST['userid']) && is_numeric($_POST['userid'])){
|
|
$userID = (int) $_POST['userid'];
|
|
mysqli_query($database->dblink, "UPDATE ".TB_PREFIX."medal set del = 1 WHERE userid = ".$userID."");
|
|
}
|
|
|
|
$admid = (int) $_SESSION['id'];
|
|
$uid = (int) ($_POST['uid'] ?? 0);
|
|
$name = $database->escape((string) $database->getUserField($uid, "username", 0));
|
|
$medalLogId = isset($medalID) ? $medalID : 0;
|
|
//TODO: Make a dedicated method for logging
|
|
mysqli_query($database->dblink, "INSERT INTO ".TB_PREFIX."admin_log values (0, $admid, 'Deleted medal id [#".$medalLogId."] from the user <a href=\'admin.php?p=player&uid=$uid\'>$name</a> ',".time().")");
|
|
|
|
header("Location: ../../../Admin/admin.php?p=player&uid=".$uid);
|
|
?>
|