34107-vm/sandbox.php
Flatlogic Bot d9d53de693 chat
2025-09-16 17:11:16 +00:00

56 lines
2.0 KiB
PHP

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>PHP Sandbox</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<link rel="stylesheet" href="assets/css/vibe.css">
</head>
<body>
<?php include 'navbar.php'; ?>
<div class="container mt-5">
<h1>PHP Sandbox</h1>
<p>Write and execute PHP code in a sandboxed environment.</p>
<form method="post">
<div class="form-group">
<textarea name="code" class="form-control" rows="10" placeholder="Enter your PHP code here..."><?php echo isset($_POST['code']) ? htmlspecialchars($_POST['code']) : ''; ?></textarea>
</div>
<button type="submit" class="btn btn-primary">Execute</button>
</form>
<hr>
<?php
function execute_php_code($code) {
if (strpos(trim($code), '<?php') !== 0) {
$code = '<?php ' . $code;
}
$descriptorspec = [
0 => ["pipe", "r"],
1 => ["pipe", "w"],
2 => ["pipe", "w"]
];
$process = proc_open('php', $descriptorspec, $pipes);
if (is_resource($process)) {
fwrite($pipes[0], $code);
fclose($pipes[0]);
$output = stream_get_contents($pipes[1]);
fclose($pipes[1]);
$error = stream_get_contents($pipes[2]);
fclose($pipes[2]);
proc_close($process);
return $output ?: $error;
}
return 'Failed to create process.';
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && !empty($_POST['code'])) {
$code = $_POST['code'];
$output = execute_php_code($code);
echo '<h3>Output:</h3>';
echo '<pre>' . htmlspecialchars($output) . '</pre>';
}
?>
</div>
</body>
</html>