PHP快速入门04-前后端数据交互与文件上传

news2024/11/22 12:10:20

文章目录

  • 前言
  • 前后端数据交互与文件上传
    • 前后端数据交互 $_GET $_POST
    • 文件上传
  • 总结


前言

本文已收录于PHP全栈系列专栏:PHP快速入门与实战
在这里插入图片描述

前后端数据交互与文件上传

前后端数据交互 $_GET $_POST

他们都是超全局变量。它们用于从HTTP请求中获取数据,并且在很多情况下都可以起到相同的作用。但是,它们之间还是有一些不同之处。

$_GET 当浏览器向服务器发送一个HTTP GET请求时,浏览器会将请求的参数信息附加在URL后面(如www.example.com/index.php?name=john&age=25)。这些参数的信息都被存储在PHP的超全局变量$_GET中。在PHP脚本内,可以通过$_GET[‘name’]和$_GET[‘age’]来获取相应的值。需要注意的是,由于这些数据被附加在URL后面,它们是可见的,因此不适合传输敏感的数据。

$_POST: 当浏览器向服务器发送一个HTTP POST请求时,浏览器会将请求的参数信息附加在HTTP消息主体中。这些参数的信息都被存储在PHP的超全局变量$_POST中。在PHP脚本内,可以通过$_POST[‘name’]和$_POST[‘age’]来获取相应的值。相比$_GET,由于POST请求的参数信息在HTTP消息主体中,因此不会像GET请求一样被直接暴露在URL中,所以适合传输敏感的数据。

下方演示一个前端通过form提交name和email的时候,PHP获取数据的示范。

HTML代码:

<form method="post" action="process_form.php">
  <label for="name">Name:</label>
  <input type="text" name="name" id="name">
  <br>
  <label for="email">Email:</label>
  <input type="email" name="email" id="email">
  <br>
  <input type="submit" value="Submit">
</form>

PHP代码:

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $name = $_POST["name"];
  $email = $_POST["email"];

  // 处理数据,比如存储到数据库中
}
?>

文件上传

文件上传是一个非常普遍的操作,PHP主要使用到了超全局变量$_FILES。$_FILES是PHP中的一个超级全局变量,用于在处理HTML表单时上传文件。它是一个数组,包含了上传文件的各种信息,如文件名、文件类型、临时文件名、文件大小等。$_FILES数组由表单中带有enctype为multipart/form-data的file类型的input元素提交而来。

  • $_FILES数组包含五个元素:

  • $_FILES[‘name’]:上传文件的原始文件名。

  • $_FILES[‘type’]:上传文件的MIME类型(文件类型)。

  • $_FILES[‘tmp_name’]:上传文件在服务器上储存的临时文件名。

  • $_FILES[‘error’]:上传文件时的错误代码。

  • $_FILES[‘size’]:上传文件的大小,单位为字节。

开发人员可以使用$_FILES数组将上传的文件移到其它位置,或进行其他的操作,例如检查文件类型和大小,验证文件是否符合业务要求,压缩图片等等。下方演示了一个文件上传案例。

HTML代码:

<form action="upload.php" method="post" enctype="multipart/form-data">
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="上传文件" name="submit">
</form>

PHP代码:

<?php
$target_dir = "uploads/"; // 上传目录
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]); // 上传文件的完整路径
$uploadOk = 1; // 上传成功的标志

// 检查文件是否为真实的图片
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
    echo "文件是一个真实的图片 - " . $check["mime"] . ".";
    $uploadOk = 1;
} else {
    echo "文件不是真实的图片。";
    $uploadOk = 0;
}

// 检查文件是否已经存在
if (file_exists($target_file)) {
    echo "抱歉,文件已经存在.";
    $uploadOk = 0;
}

// 检查文件大小
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "抱歉,您的文件太大.";
    $uploadOk = 0;
}

// 上传文件
if ($uploadOk == 0) {
    echo "抱歉,文件没有被上传.";
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "文件". basename( $_FILES["fileToUpload"]["name"]). "上传成功.";
    } else {
        echo "抱歉,文件上传失败.";
    }
}
?>

总结

以上就是关于本篇文章介绍的内容,前后端数据交互与文件上传,后续更多内容将收录在专栏PHP快速入门与实战中,感谢大家支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/439577.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

除了学历,你更需要有能力

遥想当年&#xff0c;家里培养出一个大学生&#xff0c;是多荣耀的事&#xff01;可现今却处于一个比较尴尬的状态。 为什么大学生贬值得这么厉害&#xff1f;其实大学生之所以会不值钱不外乎三大原因&#xff1a;量大、与企业需求不匹配、质量差。 高校扩招下&#xff0c;大…

OpenAI最新官方ChatGPT聊天插件接口《接入插件快速开始》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(二)(附源码)

Getting started 快速开始 前言Introduction 导言Plugin manifest 插件清单OpenAPI definition OpenAPI定义Running a plugin 运行插件Setup a local proxy of your public API 设置公共API的本地代理 Writing descriptions 书写描述Best practices Debugging 排除故障其它资料…

【Android】popup windows 的使用方式 和 遇到不显示的坑

背景 在项目开发过程中有一个需求就是点击一个问号icon 弹出相关提示信息在下面&#xff0c;那么就得对这个做适配了。 计划采用popupWindow 实现&#xff1a; 参考 实现 基本的套路就是写一个xml对应的布局&#xff0c;然后在java 层使用即可。 特别注意的是该xml布局要慎…

ubuntu输入法问题汇总

Xfce4桌面环境输入法 Ubuntu20.04、ubuntu21.04中安装xfce4桌面环境&#xff0c;自带中文输入法&#xff1b; 原生xubuntu20.04中文输入法问题解决办法&#xff1a; 更新语言支持失败的话&#xff0c;终端键入&#xff1a;sudo apt-get install cmake qt5-default qtcreator…

网络安全——传输层安全协议(3)

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.SSL密钥更改协议 二.SSL告警协议 关闭报警 错误报警 三.SSL协议安全性…

软件测试测试开发技能

从事软件测试许多年&#xff0c;想必很多人都有感到迷茫不知所措的时候&#xff0c;人生的十字路口有很多&#xff0c;该如何抉择呢&#xff1f;有人成功转型&#xff0c;QA、项目管理、配置管理。当然还有技术型&#xff0c;性能测试、自动化测试、测试开发&#xff0c;而想要…

爬虫JS逆向思路-hook钩子

网络上几千块都学不到的JS逆向思路这里全都有&#x1f44f;&#x1f3fb;&#x1f44f;&#x1f3fb;&#x1f44f;&#x1f3fb; 本系列持续更新中&#xff0c;三连关注不迷路&#x1f44c;&#x1f3fb; 干货满满不看后悔&#x1f44d;&#x1f44d;&#x1f44d; &…

连续3天3场分享,KubeVela@KubeCon EU 2023 抢鲜看!

自从 2019 年 Open Application Model 诞生以来&#xff0c;KubeVela 已经经历了几十个版本的变化&#xff0c;并向现代应用程序交付先进功能的方向不断发展。最近&#xff0c;KubeVela 完成了向 CNCF 孵化项目的晋升&#xff0c;标志着社区的发展来到一个新的里程碑。今天&…

有了MySQL,为什么还要有NoSQL

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;MySQL和NoSQL的区别 ✅创作者&#xff1a;林在闪闪发光 ⏰预计时间&#xff1a;30分钟 &#x1f389;个人主页&#xff1a;林在闪闪发光的个人主页 &#x1f341;林在闪闪发光的个人社区&#xff0c;欢迎你的加入: 林在闪闪…

PYQT5学习笔记02——程序基本结构之面向对象版本

我们之前写的代码耦合性比较高&#xff0c;复用性不高&#xff0c;这是面向过程编程的缺点。我们可以把程序基本结构设计成面向对象的版本&#xff0c;把 设置控件这部分内容封装到一个类中。 比如这个是我们的窗口&#xff0c;红色的矩形是相同的菜单控件&#xff0c;既然是一…

研报精选230420

目录 【行业230420浙商证券】卫浴行业深度报告&#xff1a;智能卫浴新变局&#xff0c;国货崛起正当时 【行业230420平安证券】氢能全景图&#xff08;上&#xff09;制氢篇&#xff1a;商业模式起步&#xff0c;绿氢初试锋芒 【行业230420天风证券】建筑装饰行业深度研究&…

InstructGPT:Training language models to follow instrcutions with human feedback

InstructGPT&#xff1a;Training language models to follow instrcutions with human feedback 介绍模型数据集TaskHuman data collectionmodel 实验结果参考 介绍 现在LLM可以被prompt来完成一系列的下游任务&#xff0c;然而这些模型也总会产生一些用户不想要的结果&#…

ESP32 WiFi扫描、WiFi通道查询

ESP32WiFi扫描程序 代码解决什么问题&#xff1f; 扫描周围WiFi并识别指定WiFi名称的WiFi通道&#xff08;为了ESP32的esp-now协议正常通信&#xff09;。 这跟ESP32 now有什么关系&#xff1f; ESP32使用NOW协议进行通信时&#xff0c;要求参与通信的设备必须处于同一物理…

ASEMI代理ADI亚德诺AD8603AUJZ-REEL7车规级芯片

编辑-Z AD8603AUJZ-REEL7芯片参数&#xff1a; 型号&#xff1a;AD8603AUJZ-REEL7 偏移电压&#xff1a;12μV 偏移电压漂移&#xff1a;1μV/C 输入偏置电流&#xff1a;0.2 pA 输入失调电流&#xff1a;0.1 pA 输入电压范围&#xff1a;–0.3 to 5.2V 输入电容&#…

Win10+VS2019安装vcpkg

vcpkg是一个C的包管理器。类似Python中的pip。安装后可以直接通过命令下载一些C的包&#xff0c;省的自己编译配路径。安装后的包都被vcpkg统一保存&#xff0c;统一配置路径。VS中哪个项目需要&#xff0c;就将其配置到某个项目中&#xff0c;当然也可以全局配置。 1、下载vc…

Node 04-http模块

HTTP 协议 概念 HTTP&#xff08;hypertext transport protocol&#xff09;协议&#xff1b;中文叫 超文本传输协议 是一种基于TCP/IP的应用层通信协议 这个协议详细规定了 浏览器 和 万维网 服务器 之间互相通信的规则 协议中主要规定了两个方面的内容: 客户端&#xff1…

Coovally再升级!基于CV大模型的智能标注解放你的双手

近日&#xff0c;随着SAM大模型的横空出世&#xff0c;“分割一切”成为可能&#xff0c;基于CV大模型的标注技术受到瞩目。 SAM分割示例 SAM大模型 Meta 在论文中发布了名为 Segment Anything Model (SAM)的新模型&#xff0c;“SAM 已经学会了关于物体的一般概念&#xff0c…

Hbase1.1:HBase官网、HBase定义、HBase结构、HBase依赖框架、HBase整合框架

这里写自定义目录标题 HBase官网HBase特点&#xff1a;大HBase定义HBase结构HBase依赖框架hadoop HBase整合框架PhoenixHive HBase官网 Hbase官网地址 HBase是Hadoop database&#xff0c;一个分布式、可扩展的大数据存储。 当您需要对大数据进行随机、实时读/写访问时&…

Activiti学习03

这里写目录标题 一、开发环境1.1 Java环境1.2 数据库1.3 开发工具 二、Activiti入门体验2.1 新建项目2.2 pom.xml文件2.3 activiti.cfg.xml文件2.4 添加日志配置文件 三、创建数据库3.1 创建数据库3.2 执行代码3.2.1 通过代码实现创建表格3.2.2 简化代码 四、绘制流程4.1 新建b…

香港金银业贸易场十大会员名单排行榜

在种类丰富全面的国际投资市场中&#xff0c;黄金拥有者良好的受众基础&#xff0c;黄金投资产品有着悠久的历史记录和蓬勃旺盛的生命力&#xff0c;数百年以来无数炒金者在黄金投资中实现了投资理财的梦想&#xff0c;但是在黄金投资的过程中&#xff0c;投资中需要面对无数考…