删除文件,即使是致命的错误



我正在尝试创建一个在线php编辑器。替代eval,我这样做

  1. 通过表单post(以iframe为目标)请求获取代码并将其保存在临时文件
  2. 包括临时文件,所以代码被执行
  3. 删除临时文件

<?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
?>

这工作得很好,但是当用户通过他的代码产生错误时…断开链接不工作…

使用register_shutdown_function

点击链接http://php.net/manual/en/function.register-shutdown-function.php


register_shutdown_function( "shutdown_handler" );
function shutdown_handler() {
  // delete file here
}

注意:按原样执行用户输入的代码不是一个好的做法。这个系统打开跨站脚本攻击。

相关内容

最新更新