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

    IP转为bigint create function [dbo].[iptobigint](@ipinfo varchar(16)) returns bigint as begin declare @ ...

  2. 关于proTable设置列固定,始终没有固定的效果的原因

    使用proTable设置操作列固定 const columns: ProColumns<IssueItem>[] = [ { title: '操作', valueType: 'option ...

  3. leetcode-1072 Flip Columns For Maximum Number of Equal Rows

    Given a matrix consisting of 0s and 1s, we may choose any number of columns in the matrix and flip e ...

  4. 记一次dubbo服务丢失的问题排查

    主要环境与用到的(关键)组件: Springboot2.3.2 其中,dubbo-spring-boot-starter版本为2.7.8 zookeeper3.5.9 首先是服务报错: No prov ...

  5. 统一返回对象Result

    统一返回对象Result 项目中我们会将响应封装成json返回,一般我们会将所有接口的数据格式统一, 使前端(iOS Android, Web)对数据的操作更一致.轻松. 一般情况下,统一返回数据格式 ...

  6. 【LeetCode回溯算法#07】子集问题I+II,巩固解题模板并详解回溯算法中的去重问题

    子集 力扣题目链接 给你一个整数数组 nums ,数组中的元素 互不相同 .返回该数组所有可能的子集(幂集). 解集 不能 包含重复的子集.你可以按 任意顺序 返回解集. 示例 1: 输入:nums ...

  7. Android笔记--图形控制

    图形Drawable 形状图形(其定义文件是以shape标签为根节点的XML描述文件,支持四种类型的形状) 具体实现: 在shape标签里面,solid指定填充的颜色,stroke指定边框颜色,cor ...

  8. Windows 11 正式版(2021/10/19更新)

    Windows 11 (business editions), version 21H2 (updated October 2021) (x64) - DVD (Chinese-Simplified) ...

  9. Teamcenter_NX集成开发:使用NX、SOA连接Teamcenter

    最近工作中经常使用Teamcenter.NX集成开发的情况,因此在这里记录使用NX.SOA连接到Teamcenter的连接方式. 主要操作: 1-初始化UGMGR环境成功后就可以连接到Teamcent ...

  10. 解决ueditor表格拖拽没反应的问题

    背景 ueditor作为百度推出的富文本编辑框,以功能强大著称. 笔者最近用这个编辑框做了一个自定义打印格式的功能.允许用户在富文本编辑框中设定打印格式,再实际打印时,根据关键字替换数据库中信息,然后 ...