PHP是现如今十分流行的轻量级语言,经常用来做应用的后端开发,其特点是语法简单,十分容易上手。除了单独做后端,PHP还能够将程序嵌入到HTML文件中执行,非常容易实现简单的前后端交互。而且PHP的运行很轻松,只要下载PHP环境并打开服务,就能通过访问文件的形式执行PHP文件,并且获得其返回的数据了。但是可惜由于很多原因,PHP不太适合复杂和安全性要求高的大应用,所以求职方面,可能不如Java后端等吃香。但是如果你只是需要为自己的应用写个简单的后台,或者是像我一样在学校里做做项目,参加参加比赛,那么PHP还是一个不错的选择的。
 
接下来就正式开始入门内容。首先,基本的语法我就不赘述了,有点编程经验的话自己去看会儿文档,知道个大概就行了,具体的实在不行到时候用到再百度也没事。最核心的就是,被<?php ?> 这个标签包裹下的语句,都会被解析成php代码然后执行。比如下面这个最简单的例子,只要把这个php文件放在PHP环境下,就能够输出内容了。具体的PHP环境安装我就不多说了,常见的有PHPStudy、XAMPP、WAMP等等集成环境,Linux下也只用几条指令就行,也基本上没有什么坑,装好就能直接用了。
 
  1. <?php
  2. echo "Hello World!";
  3. ?>
 
明白了PHP大概是怎么运作的,我们就可以利用PHP实现很多功能了,比如说实现最简单的前后端交互,前端通过Ajax发送一个get请求到我们的后端,获取后端返回的数据。
 
  1. var xmlhttp = new XMLHttpRequest();
  2. xmlhttp.open("GET", "https://mu-mu.cn/1.php", true);
  3. xmlhttp.send();
  4. xmlhttp.onreadystatechange = function() {
  5. if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
  6. console.log(this.responseText);
  7. }
  8. }
 
这里就会出现第一个小问题了,那就是跨域请求,具体的内容我以后有时间希望能够专门写一篇博文来详细地讲,现在就先说个大概吧。首先,域=协议名+主机名+端口号,只要你访问的域中有一个是不同的,那么你的这次请求就是跨域的,这么做是为了安全性,网络世界可不是法外之地,怎么能随随便便想去哪里就去哪里呢。
 
解决的方法很简单,常用的方法有两种。第一种是把前后端放在同一个域下,这样你的后端接口就只处理来自你部署于同一个域下的应用的请求了。第二种方法是后端进行设置,比如添加允许跨域的header头。这样子所有人都能够访问你的后端了,当然也可以设置白名单稍做限制。关于什么是header头以及更多请求的内容,以后有机会再说吧。
 
  1. <?php
  2. header("Access-Control-Allow-Origin: *");
  3. header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE");
  4. header('Access-Control-Allow-Headers:x-requested-with,content-type');
  5. return "111";
  6. ?>
加上header头之后,打开控制台,再次访问,果然就没有问题了,通过这种方式,我们就实现了最简单的向后端获取数据,不过这样子获取到的数据都是静态的写死的,不能满足我们的大多数需求,所以之后还得连接数据库,以及对数据库进行操作。
 
 
获取数据是没问题了,那怎么向后端发送数据呢?其实也很简单,之前讲过Ajax发送数据的简单方法有两种,一种是放在url种,通过GET方法发送,另一种是放在body里面,通过POST方法发送。
  1. //GET方法只需修改url,通过?参数名=值&参数名=值的形式发送数据
  2. xmlhttp.open("GET", "https://mu-mu.cn/1.php?name=mumu", true);
  3. //后端
  4. $name = $_GET['name'];
  5. //POST方法 POST发送数据的方式多种多样,可以以表单、json、编码字符等形式发送,只需要设置请求头就可以了
  6. let data = "name=mumu";
  7. xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
  8. xmlhttp.send(data);
  9. //同样后端获取前端POST数据的形式也是相应变化的,常见的有两种:
  10. $_POST['fieldname']或者$_REQUEST['fieldname']对应x-www-form-urlencoded,也就是表单发送过来的数据
  11. file_get_contents("php://input");可以获取任何POST数据,但是还要自己对数据进行处理

PHP前后端交互的更多相关文章

  1. Node之简单的前后端交互

    node是前端必学的一门技能,我们都知道node是用的js做后端,在学习node之前我们有必要明白node是如何实现前后端交互的. 这里写了一个简单的通过原生ajax与node实现的一个交互,刚刚学n ...

  2. Django之META与前后端交互

    Django之META与前后端交互 1 提交表单之GET 前端提交数据与发送 1)提交表单数据 2)提交JSON数据 后端的数据接收与响应 1)接收GET请求数据 2)接收POST请求数据 3)响应请 ...

  3. 前后端交互实现(nginx,json,以及datatable的问题相关)

    1.同源问题解决 首先,在同一个域下搭建网络域名访问,需要nginx软件,下载之后修改部分配置 然后再终端下cmd  nginx.exe命令,或者打开nginx.exe文件,会运行nginx一闪而过, ...

  4. springboot+mybatis+thymeleaf项目搭建及前后端交互

    前言 spring boot简化了spring的开发, 开发人员在开发过程中省去了大量的配置, 方便开发人员后期维护. 使用spring boot可以快速的开发出restful风格微服务架构. 本文将 ...

  5. 百度ueditor的图片上传,前后端交互使用

    百度ueditor的使用 一个文本编辑器,看了网上很多文档写的很乱,这里拾人牙慧,整理下怎么使用. 这个东西如果不涉及到图片附件上传,其实很简单,就是几个前端文件,直接引用,然后配置下ueditor. ...

  6. SSM-网站后台管理系统制作(4)---Ajax前后端交互

    前提:Ajax本身就为前后端交互服务的,实现功能:用户输入信息,实时判断用户的情况,这也是现在登录界面普遍流行的做法.前端js通过注释识别Controller层,该层查询返回,和之前Google验证码 ...

  7. 【开源.NET】 轻量级内容管理框架Grissom.CMS(第二篇前后端交互数据结构分析)

    这是 CMS 框架系列文章的第二篇,第一篇开源了该框架的代码和简要介绍了框架的目的.作用和思想,这篇主要解析如何把sql 转成标准 xml 配置文件和把前端post的增删改数据规范成方便后台解析的结构 ...

  8. thinkphp+jquery+ajax前后端交互注册验证

    thinkphp+jquery+ajax前后端交互注册验证,界面如下 register.html <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1. ...

  9. Servlet实现前后端交互的原理及过程解析

    在日常调试项目时,总是利用tomcat去启动项目,并进行前后端联调,但对于前后端的请求响应的交互原理及过程并不是特别清晰. 为什么在前端发出相应请求,就能跳转到后端通过程序得到结果再响应到前端页面呢? ...

  10. nodejs实现前后端交互

    本人nodejs入门级选手,站在巨人(文殊)的肩膀上学习了一些相关知识,有幸在项目中使用nodejs实现了前后端交互,因此,将整个交互过程记录下来,方便以后学习. 本文从宏观讲述nodejs实现前后端 ...

随机推荐

  1. c# Visual Studio|There is no editor available for ***,make sure the application for the file type(.vb) is installed问题解决方法

    这个问题出现在在使用VS编码当中,电脑意外关机,导致的文件的缺失或者损坏. 使用反编译软件(如:ILSpy)对编译后的 .EXE文件进行反编译,在翻遍的结果中将相关代码拷贝至目标路径下,替换所需文件. ...

  2. buuoj.cn-web刷题记录-笔记

    1.万能密码 [极客大挑战 2019]EasySQL username=admin' or '1'='1&password=admin' or '1'='1 因为拼接为sql 会变成  sel ...

  3. 截取屏幕 转为GIF 图片

    近期winform 做的一个截取屏幕的软件给大家!谁要留言给我哦! sss

  4. uni-popup 遮不住头部标题的解决办法

    要做一个小程序,会有弹窗,但是uni-app的API组件uni.showModal不足以满足我的需求,于是我用HBuilderX引入了uni-popup. 代码是这样的 <button @cli ...

  5. 谁会拒绝一个开源的 3D 博客呢?

    说到博客大家一定都不陌生,不管你是深耕职场多年的老鸟,还是在学校努力学习的小鸟,应该都有过一段"装扮"博客的经历,比如:放上喜欢的图片.添加炫酷的交互.换上 DIY 的博客主题等等 ...

  6. Centos 7配置使用nginx反向代理mysql

    背景:由于WEB服务和MySQL数据库服务分开部署的,由于网络问题限制,有时需要通过中间代理服务器跳转连接MySQL,所以需要在中间服务器上配置代理. 1.添加stearm模块 # nginx通常代理 ...

  7. 实现⼀个简洁版的promise

    // 三个常量⽤于表示状态 const PENDING = 'pending' const RESOLVED = 'resolved' const REJECTED = 'rejected' func ...

  8. EX6新增的字符串

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 介绍ChatGPT:基于GPT-3.5的强大自然语言处理工具

    大家好,今天我们来聊一下ChatGPT,一个基于GPT-3.5架构的大型语言模型.ChatGPT在自然语言处理方面有着非常强大的能力,可以进行语言生成.文本分类.对话生成等多种任务.接下来,我们将会详 ...

  10. solidity中的mapping

    mapping可以理解为python中对字典的键值遍历,键是唯一的而值是可以重复的 mapping函数的构造: mapping(_KeyType => _ValueType)  mapping ...