header

() 是 PHP 系统函数,用于向客户端发送原始的 HTTP 响应报文头。

请注意 header() 必须在任何实际输出之前调用,不管是普通的 HTML 标签,还是文件或 PHP 输出的空行,空格。

header()函数常用功能

设置文档类型及编码

设置文档类型以及编码,这将决定浏览器将以什么形式、什么编码来显示当前页面。
语法格式
php
// header(“HTTP/1.1 404 Not Found”);
// header(“HTTP/1.1 200 OK”);
header(“content-type:text/html;charset=utf8”);
echo “你好”;

  1. | **文件扩展名** | **Content-Type(Mime-Type)** | **描述** |
  2. | -------------- | ----------------------------- | ------------------------- |
  3. | .txt | text/plain | 纯文本类型 |
  4. | .html | text/html | 文本的HTML类型 |
  5. | .xml | text/xml | 文本的XML类型 |
  6. | .jpg、.jpeg | image/jpeg | jpeg格式的图像类型 |
  7. | .gif | image/gif | gif格式的图像类型 |
  8. | .png | image/png | png格式的图像类型 |
  9. | .ppt | application/vnd.ms-powerpoint | microsoft powerpoint类型 |
  10. | .pdf | application/pdf | pdf文档类型 |
  11. | .mp3 | audio/mp3 | mp3音频文件类型 |
  12. | .mp4 | video/mpeg4 | mp4视频文件类型 |
  13. | .avi | video/avi | avi视频文件类型 |
  1. 字符集编码
  2. gb2312
  3. 简体中文
  4. 一个汉字占用两个字节存储空间
  5. gbk
  6. 简繁体中文
  7. 一个汉字占用两个字节存储空间
  8. utf-8
  9. 各国文字
  10. 一个汉字占用三个字节存储空间

注意:
1、在 header() 函数之前,不能有任何形式的输出。
2、纯 php 代码文件中,“?>”可以省略不写。

页面重定向

页面重定向,用于实现浏览器页面的自动跳转。
header(“location:http://www.baidu.com“);
通过header()实现页面跳转,跳转地址为百度网站。

字符串拼接

字符串拼接,可以将两个或多个字符串拼接成一个新的字符串。

PHP中,常用拼接字符串的方法,有以下两种:

连接运算符“.”

通过. 点运算符,可以将字符串和另一个值进行拼接 ,另一个值可以是字符串,可以是其它类型数据

如果是数组,会弹出一个警告,并且拼接内容 只有 Array, 并不会拼接数据中的内容 .

  ```php
  echo "hello" . " world";
  echo "<br>";

  echo "PHP" . 7.2;
  echo "<br>";

  // 拼接时, 连接符两侧必须要有空格
  // echo 100."hello";
  echo "<br>";

  // 不会拼接数组中的内容
  $arr = array(1,2,3,4,5);
  echo "Array:" . $arr;
  echo "<br>";

  // 不会拼接数组中的内容
  $strs = array("aa","bb","cc");
  echo "Array:" . $strs;

内嵌变量

PHP 中.可以通过在双引号字符串中 使用 { }来限定变量的使用,防止字符串与变量名混淆.
PHP允许我们在双引号的字符串中,通过嵌入变量名的方式,来拼接字符串。

  ```php
   $v = 7.2;
      echo "PHP {$v}";
      echo "<br>";

      // 也不会展开拼接数组中的内容
      $arr = array(1,2,3,4,5);
      echo "Array: {$arr}";
      echo "<br>";

      // 也不会展开拼接数组中的内容
      $strs = array("aa","bb","cc");
      var_dump("Array: {$strs}")
注意:内嵌变量在不使用 {} 时,变量名可能会与其他字符发生混淆,为了避免这种情况,我们可以在变量名的前后添加空格。
<a name="VJdd2"></a>
## php表单处理
表单是 PHP 与 Web 页面交互的方法之一,而表单提交数据有两种请求方式,即 GET 请求方式和 POST 请求方式。

针对于表单的两种提交方式, PHP 提供了三个全局变量,分别为 $_GET、$_POST、$_REQUEST,用于获得表单提交的数据。

<a name="G6j7m"></a>
### 请求参数

http get请求方式 ,会将请求数据,以键值对的形式,拼接到URL后,服务器接收之后,可以获取客户端提供的数据

```php
http://www.baidu.com/?username=tom&passwd=123123
// http://www.baidu.com/  请求的主机地址
// ? 连接符, 表示后面是请求时携带的数据, 也称为查询参数 / 查询字符串 (Query String)
// username=tom&passwd=123123 查询字符串,以键值对形式表示  key=value
// & 查询字符串中,多个键值对,使用 & 进行接连

$_GET

$变量 = $_GET["表单元素名"];

$_GET 是 一个数组类型变量, 用于获得表单 GET 请求方式提交的数据。

通过 URL 参数(又叫 query string)传递给当前脚本的变量的数组。

注意:该数组不仅仅对 method 为 GET 的请求生效,而是会针对所有带 query string 的请求

  • 示例:

    • index.html 文件

      <!DOCTYPE html>
      <html lang="en">
      <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      </head>
      <body>
      <!-- HTML 页面中的表单,用来收集数据,并发送给服务器的test.php接口进行处理 -->
      <form action="login.php" method="GET">
        <p>姓名: <input type="text" name="username" id="n"></p>
        <p>密码: <input type="password" name="passwd" id="p"></p>
        <p><input type="submit" value="提交"></p>
      </form>
      </body>
      </html>
      
    • login.php 文件

      <?php
      // 向客户端发送响应头信息
      header("Content-Type:text/html;charset=utf-8");
      // 获取客户端提交的查询参数数据
      $username = $_GET["username"];
      $passwd = $_GET["passwd"];
      echo "登陆成功";
      echo "<br>";
      echo "登陆用户名为:{$username}";
      echo "<br>";
      echo "登陆密码为:{$passwd}";
      ?>
      

$_POST

$变量 = $_POST["表单元素名"];

$_POST 用于获得表单 POST 请求方式提交的数据。

当 HTTP POST 请求的 Content-Type 是 application/x-www-form-urlencodedmultipart/form-data 时,会将变量以关联数组形式传入当前脚本。

  • 示例

    • index.html

      <!DOCTYPE html>
      <html lang="en">
      <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      </head>
      <body>
      <!-- HTML 页面中的表单,用来收集数据,并发送给服务器的test.php接口进行处理 -->
      <form action="login.php" method="POST">
        <!-- 在post请求中,也可以在请求地址中添加查询字符串,也可以通过 $_GET 获取,但并不是 Get请求 -->
      <!-- <form action="test.php?test=testestestestest" method="POST"> -->
        <p>姓名: <input type="text" name="username" id="n"></p>
        <p>密码: <input type="password" name="passwd" id="p"></p>
        <p><input type="submit" value="提交"></p>
      </form>
      </body>
      </html>
      
    • login.php

      <?php
      // 向客户端发送响应头信息
      header("Content-Type:text/html;charset=utf-8");
      // 获取客户端提交的查询参数数据
      $username = $_POST["username"];
      $passwd = $_POST["passwd"];
      echo "登陆成功";
      echo "<br>";
      echo "登陆用户名为:{$username}";
      echo "<br>";
      echo "登陆密码为:{$passwd}";
      echo "<br>";
      echo "POST方式提交时,携带的查询参数字符串:{$_GET['test']}"
      ?>
      

      $_REQUEST

      $变量 = $_REQUEST["表单元素名"];

$_REQUEST 用于获得表单任何请求方式提交的数据。

  • 示例

    • index.html

      <!DOCTYPE html>
      <html lang="en">
      <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>Document</title>
      </head>
      <body>
      <!-- HTML 页面中的表单,用来收集数据,并发送给服务器的test.php接口进行处理 -->
      <!-- GET 方式发起请求 -->
      <!-- <form action="test.php" method="get"> -->
      <!-- POST 方式发起请求 -->
      <!-- <form action="test.php" method="POST"> -->
        <!-- 在post请求中,也可以在请求地址中添加查询字符串,也可以通过 $_GET 获取,但并不是 Get请求 -->
      <form action="login.php?test=testestestestest" method="POST">
        <p>姓名: <input type="text" name="username" id="n"></p>
        <p>密码: <input type="password" name="passwd" id="p"></p>
        <p><input type="submit" value="提交"></p>
      </form>
      </body>
      </html>
      
    • login.php

      <?php
      // 向客户端发送响应头信息
      header("Content-Type:text/html;charset=utf-8");
      // 获取客户端提交的查询参数数据
      $username = $_REQUEST["username"];
      $passwd = $_REQUEST["passwd"];
      echo "登陆成功";
      echo "<br>";
      echo "登陆用户名为:{$username}";
      echo "<br>";
      echo "登陆密码为:{$passwd}";
      echo "<br>";
      echo "POST方式提交时,携带的查询参数字符串:{$_REQUEST['test']}"
      ?>
      

      URL传参

URL 传参也叫问号传参,是 PHP 与 Web 页面交互的方法之一。
URL 传参,模拟表单 GET 请求方式,在页面跳转的过程中,通过 “?” 在 URL 地址中添加参数 ,用于实现跨页面传参的功能。
语法格式:
http://localhost/xxx.php?参数名=参数值&参数名=参数值

建立一个名称为 index.php 的页面,代码如下:
image.png示例

<!DOCTYPEhtml>
<html>
<head>
<title>URL传参</title>
<metacharset="utf-8"/>
</head>
<body>
<!--通过超链接,实现URL传参-->
<ahref="check.php?id=1&name=Tom&age=15">跳转页面</a>
</body>
</html>

image.png代码讲解
1、URL传参
跳转页面
通过超链接,实现 URL 传参功能。
check.php:将要跳转到的页面地址。
?:用于在URL 地址中传递参数。
id=1:URL 中传递的参数。id 是参数名称,1 是参数值。
name=Tom:URL 中传递的参数。name 是参数名称,Tom 是参数值。
age=15:URL 中传递的参数。age 是参数名称,15 是参数值。
在 index.php 页面,鼠标点击“跳转页面”的超链接后,页面会跳转到同级目录下的 check.php 文件,代码如下:

<?php
header("content-type:text/html;charset=utf-8");
//获得URL中的参数
$id=$_GET["id"];
$name=$_GET["name"];
$age=$_GET["age"];
//输出接收到的数据
echo"id:{$id}<br/>";
echo"name:{$name}<br/>";
echo"age:{$age}<br/>";

代码讲解
1、获得URL参数值
$id = $_GET[“id”];
$name = $_GET[“name”];
$age = $_GET[“age”];
通过 $_GET,获得 URL 中的参数值。
$_GET[“id”]:获得 UR L中,参数名称为 id 的参数值。
$_GET[“name”]:获得 URL 中,参数名称为 name 的参数值。
$_GET[“age”]:获得 URL 中,参数名称为 age 的参数值。