在线 PHP运行工具、数据库可控
- 摘要
- 实现思路
- 简要解释
- 工具原理
- 制作
- mainphp
- 上传源码
- ajax
- 上传源码
- 获取运行结果
- 触发时机
- 演示
- 首页
- 点击PHP代码给出提示
- 常规代码
- 操作数据库
- 总结
摘要
不知道大家有没有看到过这样的一个网站。名字是“菜鸟工具”,里面有很多的在线编辑,在线运行的小工具,实用也很方便。(嘻嘻,不是打广告哈,不过确实很实用)。
作为一个PHP菜鸟,如果能有一个好用的,随时随地练习语法的工具该有多好啊。很明显,上面的那个PHP在线工具,基本上已经可以满足正常的需求了。
但是美中不足的是,不支持数据库以及其他高级特性。所以这就显得很尴尬了。不能练习数据库语句,那还学个毛啊。所以还是自己动手吧,写个能支持数据库的在线工具,自己用。
实现思路
对于PHP文件而言,浏览器向服务器发送url请求的时候,解释器就会自动的把文件翻译成了浏览器可以解析的部分了。所以访问url的过程就是获取php解释过的数据的过程。
简要解释
下面简要的做个解释。比方说咱们有这样的一个temp.php文件, 内容如下:
<?phpecho "Hello PHP";
浏览器访问的时候,得到的数据如下:
工具原理
既然上面的temp.php文件可以这样工作,那么试想一下,如果我们事先把想运行的文件放到temp.php文件里面,然后在访问这个temp.php文件,这样岂不是就可以得到我们想要的结果啦。
而事实上,我就是这么干的,结果也证明,顺序得当的话,还是挺不错的。
我的想法就是:
给个按钮,点击按钮的时候首先会把源代码发送到服务器上,接下来调用一个ajax请求,把源代码的运行结果取出来,显示到“控制台”上。
制作
下面将介绍具体的实现流程。
main.php
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>我自己的PHP工具</title>
<link rel="shortcut icon" href="favicon.ico" type="image/x-ico" />
<style>
.container {width: 1356px;height: 640px;position: absolute;background: #CCC;
}.left {width: 50%;height: 100%;background: lightgray;position: relative;float: left;
}.header {width: auto;height: 61px;
}input {width: 180px;height: 60px;position: relative;background: lightgreen;float: right;margin-right: 12px;margin-top: 6px;border-radius: 25px;box-shadow: 1px 1px 1px #6e6e6e;
}.panel {width: 90%;height: 540px;align: center;
}textarea {font-size: 28px;
}.right {width: 50%;height: 100%;background: deepskyblue;position: relative;float: right;
}
</style></head>
<body><div class="container"><div class="left"><div class="header"><label><font size="5">在下面写上您的PHP代码.</font>如: echo "Hello 郭璞";</label><input id="btn_run" type="submit" value="点击运行"></input></div><hr><div class="panel"><textarea id="source" style="width: 645px; height: 540px;"name="source" placeholder="echo 'Hello World!';"></textarea><!-- <textarea type="hidden" id="hidden" hidden></textarea> --></div></div><div class="right"><h2>下面将显示出您的代码的执行结果</h2><hr><div class="panel"><textarea id="result" style="width: 645px; height: 540px;"></textarea></div></div></div><!-- 编写提交脚本,并获取返回结果 --><script src="./js/jquery-2.2.4.min.js"></script><script>// 请求运行结果function getResult() {$.ajax({type : "GET",url : "./temp.php",success : function(data) {document.getElementById("result").value = data;},error : function(err) {document.getElementById("result").value = err;}});}// 将源代码上传到服务器上function uploadSource() {var source = document.getElementById("source").value;$.ajax({type: "POST",url: "./main.php",data: {"source": source },success: function(){console.log("代码上传成功!");},error: function(err){console.log("代码上传失败!");alert(err);}});}// 使用ajax来 获取执行的结果$(document).ready(function() {document.getElementById("result").value = "正在获取运行结果··· ···";$("#btn_run").click(function(){// 先上传代码uploadSource();// 请求代码运行后的结果getResult();});});</script><!-- 编写php脚本,获取提交信息 --><?php$source = $_POST ['source'];$source = "<?php " . $source;file_put_contents ( "./temp.php", $source );?>
</body>
</html>
上传源码
<!-- 编写php脚本,获取提交信息 --><?php$source = $_POST ['source'];$source = "<?php " . $source;file_put_contents ( "./temp.php", $source );?>
经过这段代码,就可以将编辑好的源码上传到服务器上指定的temp.php上了,然后准备过程就结束了。
ajax
这里ajax起到了两方面的作用:
- 一个是上传源代码
- 一个是获取代码运行结果
上传源码
// 将源代码上传到服务器上function uploadSource() {var source = document.getElementById("source").value;$.ajax({type: "POST",url: "./main.php",data: {"source": source },success: function(){console.log("代码上传成功!");},error: function(err){console.log("代码上传失败!");alert(err);}});}
获取运行结果
// 请求运行结果function getResult() {$.ajax({type : "GET",url : "./temp.php",success : function(data) {document.getElementById("result").value = data;},error : function(err) {document.getElementById("result").value = err;}});}
触发时机
按照需求,只有在点击运行按钮的时候,才会执行上传,下载流程。所以只需要为按钮添加一个点击事件就可以啦。
$(document).ready(function() {document.getElementById("result").value = "正在获取运行结果··· ···";$("#btn_run").click(function(){// 先上传代码uploadSource();// 请求代码运行后的结果getResult();});});
演示
刚好有一个阿里云服务器,那么就放上去吧。这样也算是能够随时随地拥有一个可以正常使用的在线PHP环境了。
首页
点击“PHP代码”,给出提示
常规代码
操作数据库
总结
最后来回顾一下,本文主要是介绍了如何实现一个在线PHP编辑工具。满足了自己对于操作数据库的需求。
另外比较重要的一点就是,之所以没有使用表单的凡是提交/上传 源代码。就是因为使用表单的话,一旦提交的话,原来的表单内字段上的信息就全部消失了,这不利于后续的代码调试和修改。而采用ajax方式提交的话就没有这么多的限制了,反而能够更加自由的进行设计。
大致就是这么多了。PHP在线编辑工具还是比较容易实现的(相较于其他编程语言而言)。
或许我会着手实现一个Python的在线工具,谁知道呢。╭(╯^╰)╮
在线 PHP运行工具、数据库可控相关推荐
- 在线 PHP运行工具 数据库可控
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 摘要 实 ...
- HTML/CSS/Javascript在线代码运行工具(网站汇总)
平时需要编写些HTML和JS代码,所以业余时间找了下相关线上运行HTML和JS的网站,这里汇总一下. 这里面收集的网站地址,都可以在"程序员快速导航网" 上找到. 附地址:程序员快 ...
- python在线工具-在线 Python运行工具
在下面写上您的Python代码. name="source" placeholder="echo 'Hello World!';">print " ...
- python在线运行-在线 Python运行工具
在下面写上您的Python代码. name="source" placeholder="echo 'Hello World!';">print " ...
- 好用的php运行工具
1.php环境: 链接:https://pan.baidu.com/s/1ML9agM1DHIxm55GLd0cB1A 提取码:4n6m 备用下载: 链接:https://pan.baidu.com ...
- C语言在线代码运行编译工具推荐
C语言在线运行编译,是一款可在线编程编辑器,在编辑器上输入C语言代码,点击运行,可在线编译运行C语言,C语言代码在线运行调试,C语言在线编译,可快速在线测试您的C语言代码,在线编译C语言代码发现是否存 ...
- Lua语言在线代码运行编译工具推荐
Lua语言在线运行编译,是一款可在线编程编辑器,在编辑器上输入Lua语言代码,点击运行,可在线编译运行Lua语言,Lua语言代码在线运行调试,Lua语言在线编译,可快速在线测试您的Lua语言代码,在线 ...
- PHP语言在线代码运行编译工具推荐
PHP语言在线运行编译,是一款可在线编程编辑器,在编辑器上输入PHP语言代码,点击运行,可在线编译运行PHP语言,PHP语言代码在线运行调试,PHP语言在线编译,可快速在线测试您的PHP语言代码,在线 ...
- Pascal语言在线代码运行编译工具推荐
Pascal语言在线运行编译,是一款可在线编程编辑器,在编辑器上输入Pascal语言代码,点击运行,可在线编译运行Pascal语言,Pascal语言代码在线运行调试,Pascal语言在线编译,可快速在 ...
- Fortran语言在线代码运行编译工具推荐
Fortran语言在线运行编译,是一款可在线编程编辑器,在编辑器上输入Fortran语言代码,点击运行,可在线编译运行Fortran语言,Fortran语言代码在线运行调试,Fortran语言在线编译 ...
最新文章
- CRM问题:导入、导出实体错误
- 分布式架构springmvc+springboot+springcloud+redis
- c++ 多重背包状态转移方程_背包问题之零钱兑换
- #8ms平台,是一个支持ESP32/Sigamastar201、202/RK等硬件的开发平台,现平台Slogan有奖征集# 我们的广告语,将由你们来定!
- 如何给UI上可以接收focus事件的element动态注册onfocus处理函数
- java 复制对象_Java程序员必备:序列化全方位解析
- 计算机应用与基础实践怎么考,自考计算机基础应用科目笔试和实践性考试怎么考...
- Palindrome Index
- 基于K60/K66/LPC的HC-SR04超声波测距(附带代码)
- 奇偶个数 中国大学生mooc 翁恺 C语言
- 在Firefox中通过AJAX跨域访问Web资源
- python字典的常用方法_python操作字典类型的常用方法
- 【相机标定系列】单目相机,内参,外参
- 远程采集Linux硬盘信息,关关采集器利用远程SFTP采集 Linux放主站+windows采集教程...
- LINUX命令 VS DOS命令
- Seo:入门须知(三)网页快照投诉
- Tableau5——地图,仪表板
- 计算机双工模式,windows10系统如何设置网络双工模式?
- Task运行过程分析2
- [Matlab]椭圆滤波器设计:低通、高通、带通和带阻(4)
热门文章
- Python | Web Crawler
- win7系统64位下安装sql server2000时提示兼容性问题
- Python运维(六)--系统监控psutil、数据报scapy、扫描nmap
- 管理API访问令牌的最佳安全实践
- 河北关于加快新型建筑工业化发展的实施意见发布
- stLFR(single tube Long Fragment Read)介绍
- java swing企业人事管理系统 java swing mysql实现的企业人事管理系统源码和导入文档(1013)
- php 模拟登陆微云,微云 - HHTjim'S 部落格
- 4个方法判断食物的热量高低
- 2019-05-23 嗅探工具;影音嗅探;IRIS嗅探器;