[PHP · 初窥门径] 第一个 PHP 程序 — HelloWorld.php
[PHP · 初窥门径] 第一个 PHP 程序 — HelloWorld.php 想系统化学习 PHP 编程看看这个[编程基础] PHP · 学习手册参考文章 PhpStudy 环境配置 —— PhpStudy 目录结构 环境变量配置 · Windows 篇在前面的章节中我们已经成功安装了 PhpStudyPHP 集成开发环境有了该开发环境我们就可以编译运行 PHP 代码了。在编写 PHP 代码前我们先过一下 PHP 程序的整体运行流程我们首先会在网站的指定目录下假设值根路径下编写一个后缀为.php的源代码文件该文件内部可以包含.html文件中的内容然后我们开启 PhpStudy 的 Apache 环境。当有用户访问这个 PHP 文件时Apache 会调用 PHP 解析器解析 PHP 文件中的内容并将解析后的内容返回给用户浏览器用户浏览器接收到服务端发来的内容解析并渲染就成了我们的网页。0x01PHP · 初窥门径 —— 声明 PHP 代码块在前面的介绍中说了PHP 文件中是可以写 HTML 代码的像这种 HTML PHP 混杂写的脚本如何让解析器识别哪里是 PHP 代码呢 这就需要提到 PHP 的声明了。 PHP 的声明有如下四种格式0x0101PHP 代码块声明 — 标准版下面这种以?php开头以?结尾的样式是 PHP 最标准的声明格式也是最常用的格式?php echo 这是 PHP 的代码; # echo 是用来输出的函数。 ?0x0102PHP 代码块声明 — 省略 php 版在网络攻防中有些检查器会通过检查用户上传的内容中是否包含?php来判断用户是否上传了一个恶意脚本针对此种情况我们可以采用下面这种声明方式进行绕过? echo 这也是 PHP 代码; ?0x0103PHP 代码块声明 — 省略结尾版有时你是不是觉得写?的结尾很烦没关系这个其实也是可以省略的省略的结果就是PHP 解释器会认为从?开始的后续的所有的内容都是 PHP 的代码块? echo 这也是 PHP 代码; echo 这还是 PHP 代码;0x0104PHP 代码块声明 — 短开标签版是什么意思 | 那些遇到过的问题如何解决是什么意思经验为你挑选了2个好方法https://qa.1r1g.com/sf/ask/137147951/该声明方式奇奇怪怪的笔者也是在学习 “网络攻防” 时遇到的其格式如下下面的$name是 PHP 中声明变量的格式至于啥是变量我们后面会讲? $name ?上面这个格式其实可以等价于下面这样?php echo $name; ?以?开头的这种写法笔者经常是在写一句话木马时用到比如下面这样有点复杂了哈哈? eval($_POST[hacker]) ?上面的eval()函数它可以执行系统命令然后$_POST[hacker]它可以接收用户的输入那这两个命令一结合是不是就可以执行任意系统命令啦但是执行完系统命令还不行我们得看到命令结果的回显吧那正好?就帮我们干了这样一个事不懂没关系笔者只是这边提一嘴。0x02PHP · 初窥门径 —— 编写并执行 PHP 源文件在上一小节中你已经学会了如何声明 PHP 代码了其实也就是学会了如何编写基本的 PHP 语言的框架了所以本小节着重教你如何 “执行 PHP 代码”。0x0201快速验证 PHP 代码 —— 交互式编写如果你是一个 PHP 开发者下面这种方式可能不是很适合你可以跳过。如果你是一个 “网安” 爱好者那么下面这种方式应该会经常用。我们在看 PHP 代码时经常会遇到一些奇奇怪怪的函数这个时候光看函数解析是没用的我们一般还会尝试运行一下来确认其用法此时我们就可以通过在命令行中输入下面这个内容开启一个交互式的 PHP 运行窗口php -a如上运行完成后会出现以php 开头的一个小窗口此时我们就可以快速输入语句并单行执行啦比如我们输入下面这个语句并回车echo Welcome To Hack3rx!;echo这个函数就是用来输出后面我们给它的变量的值的现在这个值叫 “Wlecom To Hack3rX!”你看它是不是直接就输出了。除了上面这种简单的用法外我们其实还可以调用一些函数来看看比如下面这个我们尝试把Welcom To Hack3rX!进行 Base64 编码并输出echo base64_encode(Welcome To Hack3rx!);OK就说这么多不认识也没关系随着后面的学习你会逐渐理解这种交互式编写的优势的。最后再说一下怎么退出这种状态按住 Ctrl C 即可最后提一嘴啥是 “交互式编辑”像上面这种我写一行它输出一行是不是就是我一句它一句我们就产生交互了 这就是交互式编辑。0x0202通过 php 命令运行 PHP 脚本文件在前面的介绍中我们一直认为 PHP 是一种网页开发语言PHP 重心确实是为写网页而生但这其实也并不妨碍它可以作为一种脚本语言运行。我们随便找个目录创建一个test.php内容如下可以使用文本编辑器没事的主要是笔者在这里都还没有讲到 PHP 的 IDEA 咋用?php echo 1 1 ; echo 1 1;然后还是在这个目录选中目录上的路径然后输入 cmd 即可快速在当前文件夹中打开 CMD 窗口然后我们在打开的 cmd 窗口中输入下面的内容即可使用 PHP 解释器快速运行 PHP 文件php test.php至于为啥会打印 1 1 2读者可以去看看我们写入源码现在不懂没关系知道有这种运行方式就可以即 PHP 文件也是可以作为脚本运行的。0x0203通过 Web 服务中间件解析并执行 PHP 脚本文件此节就是我们最常用的了即用 PHP 语言编写 Web 文件并用客户端访问。首先我们先定位到 PhpStudy 的 Web 站点根路径下然后我们在其 Web 站点根目录下创建一个 test.php 文件内容如下PHP 与 HTML 混合!DOCTYPE html head meta charsetutf-8 titleWelcome To Hack3rX !!/title /head body h3?php echo 1 1 ; echo 1 1; ? /h3 /body /html创建完成后就可以访问了那么如何访问呢 自然是通过浏览器那么访问哪个地址呢 看一下 PhpStudy 的那个域名我们现在是不是将 test.php 写到了 localhost 域名根目录下 那很自然的我们就可以通过访问下面这个地址来获取 test.php 中的内容这里涉及了域名等的基础概念属于计算机网络基础http://localhost/test.php但是你现在访问大概率会出现上面的情况是我们操作有问题吗 这到也不是你想我们通过浏览器上的 URL 访问一个站点那个站点凭啥要接受我们的访问 如果每个人都可以随意访问别人电脑中的资源那不就乱套了嘛。不过我们现在的诉求就是要让别人能访问到此时我们就可以去开启 PhpStudy 中的 Apache 服务其实 Nginx 也可以Apache 服务就会接收别人访问本机 80 端口的请求http 协议默认是 80 端口这个也是计算机网络的只是并进行处理。此时我们再访问一下看看如上可以看到页面成功展示了 1 1 2但我相信你也注意到了其展示的结果和我们后端源码其实不一致倒是和后端源码中 PHP 执行完成后的结果一致。这也就是笔者前面一直介绍的 PHP 站点的执行流程。用户向 Apache 发起请求请求一个 PHP 文件Apache 会调用 PHP 解析器对该 PHP 文件进行解析并将解析后的文件以纯 HTML 格式返还给前端。这就是为啥前端看就和 HTML 一样后端却是贼拉复杂的代码的原因。读者还可以通过我们前面介绍的 php 命令直接运行后端的 test.php 看看结果0x03PHP · 初窥门径 —— PHP 程序中常见问题PHP 文件说实话它规则不是很严谨你偶尔写错一两个字符它也不会像其他变成语言一样直接摆烂只要错的不是很离谱它就会直接执行下去。初学者学习 PHP 时经常发生如下问题笔者大概列一下你自己写时候注意一点PHP 文件后缀问题PHP 文件后缀目前推荐就用.php别写成.html了。PHP 分号结束问题PHP 中每行代码都必须以分号结束别把 PHP 和 Python 搞混。0x0301PHP 文件后缀问题其实 PHP 文件后缀不一定必须是.php这个我们是可以控制的比如可以通过修改.htaccess文件进行配置只不过由于大部分读者是初学者就先这么理解吧。我们前面介绍了PHP 文件中可以混杂 HTML 代码并且也演示了此时就会有小伙伴想我要是往 HTML 文件中写 PHP 代码是不是也会执行 笔者告诉你不会我试过。比如还是前面演示的那个 test.php我把其后缀该为 .html 后再次访问http://localhost/test.html如上并没有解析。但其实学到后面你会发现这些都是可以自由控制的我们甚至可以把 .txt 文件都当作 HTML 解析。笔者讲这些就是告诉你编程语言没啥特别的很多初学者都会说我没有 IDA 我咋写程序嘛但 IDA 啥的其实本身只是个高级的文本编辑器要让程序运行主要还是靠编程语言的解释器。你只要装了解释器你拿啥都能写程序比如上面的记事本。而且程序的后缀也不是一成不变的只是我们喜欢这么约定俗成而已这些都是可以通过自己的配置更改的这就是人造学科的魅力可以说计算机就是建立在约定上的一门学科网络协议更是如此啥 HTTP都是人与人之间的约定计算机化了而已。0x0302PHP 分号结束问题每行 PHP 代码都必须以分号;进行结尾不然运行的时候会报错虽然如此但 PHP 还是很灵活的比如下面这个代码就不会报错读者可以自行尝试笔者并不推荐这种写法笔者把例子放这里就是为了让读者看看 PHP 语法有多宽松!DOCTYPE html head meta charsetutf-8 titleWelcome To Hack3rX !!/title /head body h3?php echo 1 1 ; echo 1 1 ? /h3 /body /html《网络安全从零到精通全套学习大礼包》96节从入门到精通的全套视频教程免费领取如果你也想通过学网络安全技术去帮助就业和转行我可以把我自己亲自录制的96节 从零基础到精通的视频教程以及配套学习资料无偿分享给你。网络安全学习路线图想要学习 网络安全作为新手一定要先按照路线图学习方向不对努力白费。对于从来没有接触过网络安全的同学我帮大家准备了从零基础到精通学习成长路线图以及学习规划。可以说是最科学最系统的学习路线大家跟着这个路线图学习准没错。配套实战项目/源码所有视频教程所涉及的实战项目和项目源码学习电子书籍学习网络安全必看的书籍和文章的PDF市面上网络安全书籍确实太多了这些是我精选出来的面试真题/经验以上资料如何领取面试真题/经验以上资料如何领取