您现在的位置是:首页 >学无止境 >PHP快速入门04-前后端数据交互与文件上传网站首页学无止境

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

黑夜开发者 2023-05-16 14:33:33
简介PHP快速入门04-前后端数据交互与文件上传


前言

本文已收录于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快速入门与实战中,感谢大家支持。

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。