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

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

前言

本文已收录于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主要使用到了超全局变量&dollar;_FILES。&dollar;_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快速入门与实战中,感谢大家支持。

相关文章
|
7月前
|
关系型数据库 MySQL
web简易开发(二){html5+php实现文件上传及通过关键字搜索已上传图片)}
web简易开发(二){html5+php实现文件上传及通过关键字搜索已上传图片)}
|
3月前
|
PHP
深入浅出PHP之文件上传功能
【9月更文挑战第26天】本文将带你了解PHP中的文件上传功能,从基本概念到实战操作,一步步教你如何实现文件上传。我们将通过代码示例和详细的解释,让你轻松掌握这一技能。
|
6月前
|
运维 Serverless 数据处理
函数计算产品使用问题之 php环境中如何修改PHP允许的文件上传大小和POST最大大小
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
7月前
|
安全 PHP
【PHP开发专栏】PHP文件上传与下载实现
【4月更文挑战第30天】本文介绍了在PHP中实现文件上传和下载的详细步骤。文件上传通过`$_FILES`全局数组处理,包括设置HTML表单、PHP脚本处理上传及安全性考虑。文件下载则可使用`readfile()`、`fpassthru()`或`file_get_contents()`函数,同时关注安全问题,如防止目录遍历漏洞。文中还提供了一个简单的图片分享网站案例,演示了上传和下载功能的集成。
130 1
|
XML JSON PHP
PHP快速入门08-JSON与XML处理
PHP快速入门与实战JSON与XML都是用于在不同的应用程序之间传输数据的格式化语言。在PHP中,可以使用内置函数处理JSON和XML格式的数据。以上就是关于本篇文章介绍的内容,JSON与XML处理,后续更多内容将收录在专栏PHP快速入门与实战。
108 0
|
7月前
|
JSON JavaScript Java
【PHP】英文博客专栏PHP快速入门个人笔记
【PHP】英文博客专栏PHP快速入门个人笔记
143 1
|
7月前
|
PHP
从建站打拿站 -- PHP(文件上传)
从建站打拿站 -- PHP(文件上传)
31 0