我正在尝试创建一个在线php编辑器。替代eval,我正在做
- 通过表单发布(以iframe作为目标)请求获取代码并将其保存在临时文件中
- 包含该临时文件,因此代码被执行
- 删除该临时文件
醇>
CODE
<?php
session_start();
if(isset($_POST['winCode']))
{
$data=$_POST['winCode'];
$_SESSION['data']=$data;
// creating a $_SESSION['data'] ,so that
// user can maximize the resultant iframe
}
file_put_contents(session_id()."_runphp.php",$_SESSION['data']);
include(session_id()."_runphp.php");//generate output
unlink(session_id()."_runphp.php");//delete temp file
?>
这很好用,但是当用户通过他的代码生成错误时..unlink不起作用.. 如果发生致命错误,我怎样才能设置unlink运行。
答案 0 :(得分:1)
使用register_shutdown_function
。
点击链接http://php.net/manual/en/function.register-shutdown-function.php
register_shutdown_function( "shutdown_handler" );
function shutdown_handler() {
// delete file here
}
注意:执行用户输入的代码不是一个好习惯。此系统将打开跨站点脚本攻击。