本人原创可编译执行php脚本的php函数
2009-08-11 20:51
267 查看
该思路究竟可以干什么呢?
例如:
可以在开发CMS的时候自定义标签,将标签的内容PHP代码存放到数据库内,在生成页面的时候将存放到数据库内的php代码读出,然后用该思路执行并获取执行后的结果替换标签。
另外也可以将该思路延伸,用以作为网站在线程序编辑器来用,可以实现在线编辑可以编译执行的php;asp;jsp等任何文本文件。也可以作为在线数据库管理工具来用,只要填写对数据库操作的php代码即可操作管理数据库。最后,嘿嘿,如果在一个黑客的手中这段代码究竟能做出什么那就不是我该想的了。
//如果要轉載本文請注明出處,免的出現版權紛爭,我不喜歡看到那種轉載了我的作品卻不注明出處的人 Seven{See7di#Gmail.com}
用法:
直接将如下代码保存为php文件,放入php运行环境中即可使用,在使用时在输入框内填写PHP代码,然后点击“提交”按钮,即可马上将您刚刚输入的PHP代码的执行结果反馈出来。
<form method="post" action="?action=submit">
<textarea rows=13 style="width:100%" name="code">
$fso=Fopen('1.php','w');
Fwrite($fso,"这是测试内容");
Fclose($fso);
For($i=14;$i<65;$i++){
echo Chr($i)."{$i}|";
}
$fengjian="冯健";
echo Chr(10).'<a href=\'http://www.7di.net\' target=\'_blank\'>官方网站地址是:www.7di.net,变量\$fengjian的值是'.$fengjian.'</a>';
echo Chr(10)."<a href=\"?action=\">返回</a>";
</textarea>
<input type="submit" value="提交">
</form>
<?php
/*
标签解析引擎
作用:将传入的PHP代码进行编译执行
返回:执行之后的结果
示例:Exe("echo \"a\";");*/
Function Exe($Str){
OB_start();
IF(Empty($Str) Or !IsSet($Str)){Return Null;}
//$Str=Str_Replace(Chr(92).Chr(92).Chr(34),Chr(14),$Str); //Chr(34)双引号
//$Str=Str_Replace(Chr(92).Chr(92).Chr(39),Chr(19),$Str); //Chr(39)单引号
$Str=Str_Replace(Chr(92).Chr(92),Chr(14),$Str); //Chr(34)双引号
$Str=Str_Replace(Chr(92),"",$Str); //替换掉\
$Str=Str_Replace(Chr(14),Chr(92),$Str);
//$Str=Str_Replace(Chr(14),Chr(92).Chr(34),$Str);
//$Str=Str_Replace(Chr(19),Chr(92).Chr(39),$Str);
Eval($Str); //解析执行
$Str=ob_get_contents(); //得到缓冲区内容
OB_end_clean(); //结束并清理缓冲
Return $Str; //返回处理结果
}
IF($_GET["action"]=="submit"){
$b=$_POST["code"];
$f=Exe($b);
Print_r ($f).Chr(10);
}?>
例如:
可以在开发CMS的时候自定义标签,将标签的内容PHP代码存放到数据库内,在生成页面的时候将存放到数据库内的php代码读出,然后用该思路执行并获取执行后的结果替换标签。
另外也可以将该思路延伸,用以作为网站在线程序编辑器来用,可以实现在线编辑可以编译执行的php;asp;jsp等任何文本文件。也可以作为在线数据库管理工具来用,只要填写对数据库操作的php代码即可操作管理数据库。最后,嘿嘿,如果在一个黑客的手中这段代码究竟能做出什么那就不是我该想的了。
//如果要轉載本文請注明出處,免的出現版權紛爭,我不喜歡看到那種轉載了我的作品卻不注明出處的人 Seven{See7di#Gmail.com}
用法:
直接将如下代码保存为php文件,放入php运行环境中即可使用,在使用时在输入框内填写PHP代码,然后点击“提交”按钮,即可马上将您刚刚输入的PHP代码的执行结果反馈出来。
<form method="post" action="?action=submit">
<textarea rows=13 style="width:100%" name="code">
$fso=Fopen('1.php','w');
Fwrite($fso,"这是测试内容");
Fclose($fso);
For($i=14;$i<65;$i++){
echo Chr($i)."{$i}|";
}
$fengjian="冯健";
echo Chr(10).'<a href=\'http://www.7di.net\' target=\'_blank\'>官方网站地址是:www.7di.net,变量\$fengjian的值是'.$fengjian.'</a>';
echo Chr(10)."<a href=\"?action=\">返回</a>";
</textarea>
<input type="submit" value="提交">
</form>
<?php
/*
标签解析引擎
作用:将传入的PHP代码进行编译执行
返回:执行之后的结果
示例:Exe("echo \"a\";");*/
Function Exe($Str){
OB_start();
IF(Empty($Str) Or !IsSet($Str)){Return Null;}
//$Str=Str_Replace(Chr(92).Chr(92).Chr(34),Chr(14),$Str); //Chr(34)双引号
//$Str=Str_Replace(Chr(92).Chr(92).Chr(39),Chr(19),$Str); //Chr(39)单引号
$Str=Str_Replace(Chr(92).Chr(92),Chr(14),$Str); //Chr(34)双引号
$Str=Str_Replace(Chr(92),"",$Str); //替换掉\
$Str=Str_Replace(Chr(14),Chr(92),$Str);
//$Str=Str_Replace(Chr(14),Chr(92).Chr(34),$Str);
//$Str=Str_Replace(Chr(19),Chr(92).Chr(39),$Str);
Eval($Str); //解析执行
$Str=ob_get_contents(); //得到缓冲区内容
OB_end_clean(); //结束并清理缓冲
Return $Str; //返回处理结果
}
IF($_GET["action"]=="submit"){
$b=$_POST["code"];
$f=Exe($b);
Print_r ($f).Chr(10);
}?>
相关文章推荐
- 本人原创可编译执行php脚本的php函数
- php脚本的执行过程(编译与执行相分离)
- php脚本的执行过程(编译与执行相分离)
- php脚本的执行过程(编译与执行相分离)
- (原创)Gedit外部工具脚本,用于编译C代码并在编译完成后执行
- php加入&转到后台运行之后没有正常执行,前台手动php执行脚本可以
- 定时执行php脚本
- PHP内核探索:PHP脚本的执行细节
- WordPress wp-includes/functions.php脚本远程任意代码执行漏洞
- 如何让PHP脚本在cli模式下执行时可接受选项和值的输入
- PHP - 用户异常断开连接,脚本强制继续执行,异常退出回调
- linux源码编译安装php,nginx,git需要的依赖安装脚本
- PHP计划任务:如何使用Linux的Crontab执行PHP脚本
- 关于PHP的编译和执行分离
- Linux下如何定时执行php脚本?Linux下如何设置定时任务?Crontab定时执行程序
- 使用php作linux自动执行脚本(呵呵,超级好用的功能)
- linux定时执行php脚本
- php 异步执行脚本
- 在服务器执行php脚本
- PHP设置脚本最大执行时间的三种方法