For a game that I am an admin on, the maps upload page will always throw the "There was an error with your upload. Please try again." error. I did not write the code, but am in a position to to fix some things (all of the devs are no where to be found to try to help fix the problem). If the code is not an issue, what should I be looking at to try and solve the issue? Thanks!
Code for the page:
<?php
if (!isset($_SESSION['User'])) // we don't want guests to upload maps
{
header("Location: /account");
exit(0);
}
// Handle map file upload
$errormessage = "";
if (isset($_FILES['mapfile']) and $_FILES['mapfile']['name'] != "")
{
if ($_FILES['mapfile']['error'] != 0 or $_FILES['mapfile']['type'] != "application/octet-stream" or $_FILES['mapfile']['size'] < 1 or $_FILES['mapfile']['size'] > 64000)
{
$errormessage = "There was an error with your upload. Please try again.";
} else
{
$_FILES['mapfile']['name'] = filter_var($_FILES['mapfile']['name'], FILTER_SANITIZE_STRING);
$_FILES['mapfile']['name'] = str_replace(" ", "_", $_FILES['mapfile']['name']);
$_FILES['mapfile']['name'] = str_replace("(", "", $_FILES['mapfile']['name']);
$_FILES['mapfile']['name'] = str_replace(")", "", $_FILES['mapfile']['name']);
if (strpos($_FILES['mapfile']['name'], "ACG") !== false or preg_filter("/[\d|\w|\.|\-|\(|\)]/i", "", $_FILES['mapfile']['name']) != "" or substr(strtolower($_FILES['mapfile']['name']), -4, 4) != ".map")
{
$errormessage = "Invalid map filename.";
} else
// if (file_exists("public/maps/".$_FILES['mapfile']['name']))
// {
// $errormessage = "Map filename already exists in filesystem.";
// } else
{
try
{
$map = new Map($_FILES['mapfile']['tmp_name']);
} catch (Exception $e)
{
$errormessage = "File is not a valid map: ".$e->getMessage();
}
}
if ($errormessage == "")
{
$mapquery = DB::selectArray("SELECT * FROM maps WHERE Mapfile='{$_FILES['mapfile']['name']}' LIMIT 1");
if (sizeof($mapquery) > 0) DB::query("DELETE FROM maps WHERE Mapfile='{$_FILES['mapfile']['name']}' LIMIT 1");
$newmap = [];
$newmap['Mapfile'] = $_FILES['mapfile']['name'];
$newmap['Mapname'] = $map->mapinfo['name'];
$newmap['Gamemode'] = $map->mapinfo['gamemode'];
$newmap['DescriptionRaw'] = $map->mapinfo['description'];
$newmap['Description'] = $map->generateDescription(str_replace(".map", "", $_FILES['mapfile']['name']));
$newmap['Numteams'] = $map->mapinfo['numteams'];
$newmap['Mapsize'] = $map->mapinfo['tilecount'];
$newmap['Flagcount'] = $map->mapinfo['neutralflags'] + $map->mapinfo['greenflags'] + $map->mapinfo['redflags'] + $map->mapinfo['blueflags'] + $map->mapinfo['yellowflags'];
$newmap['Switchcount'] = $map->mapinfo['switches'];
$newmap['Turretcount'] = $map->mapinfo['turrets'];
$newmap['Warpcount'] = $map->mapinfo['warps'];
$newmap['Views'] = 0;
$newmap['Downloads'] = 0;
$newmap['Votes'] = 0;
$newmap['LastPlayed'] = null;
if (DB::saveArray("maps", $newmap))
{
if (move_uploaded_file($_FILES['mapfile']['tmp_name'], "public/maps/".$_FILES['mapfile']['name']))
{
chmod("public/maps/".$_FILES['mapfile']['name'], 0755);
imagepng($map->createImage(), "public/maps/images/".str_ireplace(".map",".png",$_FILES['mapfile']['name']));
imagepng($map->createCroppedImage(), "public/maps/croppedimages/".str_ireplace(".map",".png",$_FILES['mapfile']['name']));
$errormessage = "Map successfully added to database.<br/><br/><a href='/maps/?map={$_FILES['mapfile']['name']}'>{$_FILES['mapfile']['name']}</a> ";
function getmaplist()
{
$maps = [];
$mapPaths = glob("public/maps/*.map");
foreach ($mapPaths as $map)
{
$map = basename($map);
$maps[$map] = substr($map, 0, -4);
}
sort($maps, SORT_NATURAL | SORT_FLAG_CASE);
return $maps;
};
Cache::put("list of maps", getmaplist());
} else
{
$errormessage = "Error uploading map file.";
}
} else
{
$errormessage = "Error adding map to database.";
}
}
}
}
?>
<?php require_once("pages/header.php"); ?>
<div id='mapuploadpage'>
<form action="/mapupload" method="POST" enctype="multipart/form-data">
<h1>Upload a Map</h1>
<input type="hidden" name="MAX_FILE_SIZE" value="64000" />
<input type="file" name="mapfile" id="mapfile" />
<input type="submit" name="upload" id="uploadbutton" value="Upload" />
<div id="uploadmessage"><?php echo $errormessage; ?></div>
</form>
</div>
<?php require_once("pages/footer.php"); ?>