呵呵,我在06年还是07年的时候为了方便在线直接执行php,也写过类似的代码,不过估计和你的比起来简陋了很多,代码如下:
其中调用GesSHi来设置高亮。
不过在线调试php最大的问题在于:你无法将该程序开放给普通访问者,因为你不知道访问者是否会有意或者无意地执行一些有一定危险性的语句,比如删除文件,列出某目录下所有文件。。。
复制内容到剪贴板
代码:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?
include_once("../api/GeSHi/GeSHi.php");
function syntax2($s){
$g=new GeSHi($s,"php");
$g->set_header_type(GESHI_HEADER_DIV);
$g->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 5);
$g->set_overall_style('color: #000066; border: 1px solid #d0d0d0; background-color: #f0f0f0;', true);
$g->set_line_style('font: normal normal 95% \'Courier New\', Courier, monospace; color: #003030;', 'font-weight: bold; color: #006060;', true);
$g->set_code_style('color: #000020;', 'color: #000020;');
$g->set_link_styles(GESHI_LINK, 'color: #000060;');
$g->set_link_styles(GESHI_HOVER, 'background-color: #f0f000;');
$g->set_header_content('GeSHi © 2004, Nigel McNie. ');
$g->set_header_content_style('font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-bottom: 1px solid #d0d0d0; padding: 2px;');
return $g->parse_code();
}
if (isset($_POST["r"])){
$rr=str_replace(array("\\\"","\\'","\\\\"),array("\"","'","\\"),$_POST["r"]);
echo syntax2($rr);
$f="xx_yy_".time().".php";
$r=fopen($f,"w");
fwrite($r,$rr);
fclose($r);
include($f);
unlink($f);
}
?>
<form method="post">
<textarea name="r" id="r" cols="80" rows="20"></textarea>
<input type="submit"><br />
<input type="checkbox" onclick="ins('time')"/>当前时间<br />
<input type="checkbox" onclick="ins('ct')"/>自定义时间<br />
<script>
var codes={};
codes["time"]="<"+"?=time()?"+">";
codes["ct"]="<"+"?=mktime(时,分,秒,月,日,年)?"+">";
function ins(c){
document.all.r.value+=codes[c];
}
</script>
</form>[
本帖最后由 Sheneyan 于 2008-2-29 20:04 编辑 ]