<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers");
header("Cache-Control: must-revalidate");
$offset = 60 * 60 * 24 * 3;
$ExpStr = "Expires: ". gmdate("D, d M Y H:i:s", time() + $offset) . "GMT";
header($ExpStr);
require ('Constants.php');
require ('../HTMLParser.php');
$results = '';
$requiredfields = array ('htmlcode', 'phpcode');
$postData = json_decode (file_get_contents ("php://input"), true);
if (empty ($postData))
{
http_response_code (App\Constants::BAD_REQUEST);
exit (json_encode (array ("error" => App\Constants::MISSING_PARAMETERS, 'code' => App\Constants::BAD_REQUEST)));
}
foreach ($requiredfields as $key)
{
if (! array_key_exists ($key, $postData) || empty ($postData[$key]))
{
http_response_code (App\Constants::BAD_REQUEST);
exit (json_encode (array ("error" => App\Constants::MISSING_PARAMETERS, 'code' => App\Constants::BAD_REQUEST)));
}
}
$phpcode = base64_decode ($postData['phpcode']);
$htmlfile = "run/output.html";
file_put_contents ($htmlfile, base64_decode ($postData['htmlcode']));
$htmlparser = new App\Custom\HTMLParser ($phpcode, array ('?>' => '', '<?php' => '', '__INDEX__' => $htmlfile));
$phpcode = $htmlparser->GetSubstitutedString();
if (App\Custom\Error::IsAnError ($phpcode))
{
http_response_code (App\Constants::BAD_REQUEST);
exit (json_encode (array ("error" => $phpcode->GetError(), 'code' => $phpcode->GetCode())));
}
try
{
$results = eval ("$phpcode");
}
catch (ParseError $e)
{
http_response_code (App\Constants::BAD_REQUEST);
exit (json_encode (array ("error" => '[PHP Compile Error] '.$e->getMessage(), 'code' => App\Constants::BAD_REQUEST)));
}
if (! $results)
{
$results = $phpcode;
$htmlfile = '';
}
else
{
file_put_contents ($htmlfile, $results);
http_response_code (App\Constants::REQUEST_OK);
exit (json_encode (array ('results' => App\Constants::SUCCESS, 'uri' => $htmlfile)));
}
?>
|