36459-vm/api/run_code.php
2025-11-29 17:28:26 +00:00

36 lines
1.3 KiB
PHP

<?php
require_once '../db/config.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_POST['challenge_id'], $_POST['language'], $_POST['solution']) && !empty($_POST['solution'])) {
$challenge_id = $_POST['challenge_id'];
$language = $_POST['language'];
$solution = $_POST['solution'];
$pdo = db();
$stmt = $pdo->prepare('SELECT sample_cases_json, expected_output FROM challenges WHERE id = ?');
$stmt->execute([$challenge_id]);
$challenge = $stmt->fetch();
if ($language === 'python') {
// WARNING: Executing user-submitted code with shell_exec is a major security risk.
// This should be replaced with a secure sandboxed execution environment.
$temp_file = tempnam(sys_get_temp_dir(), 'py');
file_put_contents($temp_file, $solution);
$output = shell_exec('python3 ' . $temp_file . ' 2>&1');
unlink($temp_file);
echo "<pre>" . htmlspecialchars($output) . "</pre>";
} else {
echo "<div class=\"alert alert-warning\"> Running code for this language is not yet supported.</div>";
}
} else {
echo "<div class=\"alert alert-danger\"> Please provide a solution.</div>";
}
} else {
header('Location: ../challenges.php');
exit();
}