PHP零基础快速入门教程 – wiki基地


PHP零基础快速入门教程:从零开始构建你的第一个动态网站

欢迎来到PHP的世界!如果你对创建动态网站充满好奇,或者想成为一名后端开发者,那么PHP是一个非常棒的起点。它易于学习,功能强大,并且拥有一个庞大而活跃的社区。

本教程专为完全没有PHP经验的零基础学习者设计。我们将从最基本的概念讲起,一步步带你搭建环境、理解语法,并最终能够编写简单的PHP脚本,为你未来的进阶学习打下坚实基础。

预计阅读时间: 约30分钟
预计实践时间: 约1-2小时(强烈建议边学边练)

本教程的目标

学完本教程,你将能够:

  1. 了解PHP在Web开发中的作用。
  2. 搭建PHP开发环境。
  3. 编写你的第一个PHP脚本。
  4. 理解PHP的基本语法、变量和数据类型。
  5. 掌握常用的运算符。
  6. 学会使用条件判断和循环结构。
  7. 了解函数的定义和使用。
  8. 初步了解如何处理表单数据。
  9. 知道接下来可以学习哪些内容。

准备好了吗?让我们开始这段激动人心的编程之旅!

第一章:PHP是什么?它在Web开发中的作用

在深入学习之前,我们先来简单了解一下PHP。

PHP 是 “PHP: Hypertext Preprocessor” 的缩写,它是一种开源的脚本语言,尤其适合于Web开发,可以嵌入到HTML中。

想象一下,你访问一个网站,看到的是一个静态的HTML页面。这个页面上的内容是固定的,不会根据用户的行为或时间变化。比如一个公司介绍页面。

但是,如果你访问一个电商网站,商品列表、用户购物车、订单信息这些内容都是动态生成的。不同的用户、不同的操作,看到的内容都不一样。这就需要一种能够在服务器端处理请求、生成动态内容的技术。PHP就是做这个的!

PHP的作用:

  • 服务器端脚本语言: PHP代码在服务器上执行,而不是在用户的浏览器上。
  • 生成动态网页内容: PHP可以根据数据库中的信息、用户的输入或其他条件,生成不同的HTML内容发送给浏览器。
  • 处理表单数据: 接收用户通过表单提交的数据(如注册信息、评论等)。
  • 与数据库交互: 连接、查询和修改数据库中的数据(如用户信息、商品信息)。
  • 管理会话(Session)和Cookie: 跟踪用户状态(如登录状态、购物车内容)。
  • 处理文件: 读取、写入、删除服务器上的文件。
  • 执行系统命令等。

简单来说,当你在浏览器地址栏输入一个网址并回车时,浏览器会向服务器发送一个请求。如果请求的是一个PHP文件(比如 index.php),服务器上的PHP解释器就会执行这个文件中的PHP代码。PHP代码根据逻辑处理数据,生成最终的HTML、CSS、JavaScript等内容,然后服务器再把这些内容发送回浏览器,浏览器再将其渲染出来。

为什么选择PHP?

  • 易于学习: 语法相对简单,有很多资源和社区支持。
  • 广泛应用: 互联网上很多网站(包括WordPress, Facebook早期等)都是用PHP构建的,市场需求量大。
  • 功能强大: 生态系统成熟,有大量现成的库和框架(如Laravel, Symfony),可以快速开发复杂应用。
  • 成本低: PHP本身是免费开源的,并且可以在多种操作系统和Web服务器上运行。

好了,对PHP有了初步认识后,让我们来搭建学习环境。

第二章:搭建PHP开发环境

正如前面提到的,PHP代码需要在服务器上执行。对于初学者来说,最简单的方式是在自己的电脑上搭建一个本地服务器环境。这个环境通常包含:

  1. Web服务器: 接收浏览器请求并返回响应(常用的是Apache或Nginx)。
  2. PHP解释器: 执行PHP代码。
  3. 数据库(可选但常用): 存储和管理数据(常用的是MySQL或MariaDB)。

将这三者(以及有时加上Perl/Python等)打包在一起的软件集合被称为 AMP。根据你使用的操作系统不同,常见的AMP软件包有:

  • XAMPP: 跨平台 (Windows, macOS, Linux)
  • WAMP: 适用于 Windows
  • MAMP: 适用于 macOS
  • LAMP: 适用于 Linux (通常是独立安装各个组件)

对于初学者,XAMPP 是一个非常好的选择,因为它支持跨平台且安装配置简单。本教程将以XAMPP为例进行讲解。

安装XAMPP步骤:

  1. 下载XAMPP:

    • 访问 Apache Friends 官方网站: https://www.apachefriends.org/
    • 根据你的操作系统,下载对应的最新版本。
  2. 运行安装程序:

    • Windows: 双击下载的 .exe 文件。安装过程中可能会出现用户账户控制提示,点击“是”。可能会弹出关于用户账户控制(UAC)的警告,点击“OK”继续。选择安装组件时,确保勾选 Apache, MySQL, PHP, phpMyAdmin (phpMyAdmin 是一个用于管理MySQL数据库的Web工具,非常方便)。选择安装目录(默认即可,或者选择一个你熟悉的位置,避免安装在Program Files等需要管理员权限的目录,这可以减少潜在权限问题)。一路点击“Next”直到安装完成。安装完成后可能会问你是否启动控制面板,选择“是”。
    • macOS: 双击下载的 .dmg 文件,然后将XAMPP图标拖动到Applications文件夹。打开Applications文件夹,找到XAMPP,双击运行。可能会提示你进行一些初始设置或安全警告,按照提示操作。启动XAMPP后,会打开一个控制面板窗口。
    • Linux: 下载 .run 文件,在终端中给予执行权限 (chmod +x [文件名]),然后以root用户或使用sudo执行 (sudo ./[文件名])。按照终端提示进行安装。
  3. 启动XAMPP控制面板:

    • Windows: 在开始菜单找到 XAMPP,点击 “XAMPP Control Panel”。
    • macOS: 在Applications文件夹中找到XAMPP,双击运行,或者从启动器中找到。
    • Linux: 通常在终端输入 sudo /opt/lampp/manager-linux-x64.run (路径可能因安装位置和版本不同而异) 或使用图形界面的启动器。
  4. 启动 Apache 和 MySQL:

    • 在XAMPP控制面板中,你会看到 Apache 和 MySQL 的模块。点击它们旁边的 “Start” 按钮。
    • 如果启动成功,模块名称后面的状态会变为绿色,并且会显示对应的端口号(Apache通常是80和443,MySQL通常是3306)。
    • 如果启动失败,通常是因为端口被其他程序占用。你可以在控制面板中点击 Config 按钮修改端口,或者关闭占用端口的程序。
  5. 测试环境是否搭建成功:

    • 打开你的浏览器。
    • 在地址栏输入 localhost127.0.0.1 并回车。
    • 如果看到XAMPP的欢迎页面,说明Apache服务器已经成功启动。
    • 在浏览器地址栏输入 localhost/phpmyadmin 并回车。
    • 如果看到phpMyAdmin的登录或欢迎页面,说明MySQL数据库也已成功启动并可以通过phpMyAdmin管理。

找到网站根目录:

你的PHP文件需要放在Web服务器能够访问到的特定目录下才能被执行。在XAMPP中,这个目录叫做 htdocs

  • Windows: XAMPP安装目录下的 htdocs 文件夹(例如:C:\xampp\htdocs
  • macOS: XAMPP安装目录下的 htdocs 文件夹(例如:/Applications/XAMPP/htdocs
  • Linux: 通常是 /opt/lampp/htdocs 文件夹

你将把你所有的PHP文件和相关的HTML、CSS、图片等文件都放在 htdocs 目录或其子目录中。

选择一个代码编辑器:

你需要一个文本编辑器或集成开发环境(IDE)来编写PHP代码。推荐一些常用的免费编辑器:

  • VS Code (Visual Studio Code): 功能强大,支持多种语言,扩展丰富。
  • Sublime Text: 轻量级,快速,插件多。
  • Notepad++ (Windows): 轻便易用,适合初学者。
  • Atom: GitHub出品,可定制性强。

选择一个你喜欢的编辑器,并在其中创建和编辑文件。

恭喜你!你已经成功搭建了PHP开发环境。接下来,我们将开始编写代码。

第三章:你的第一个PHP脚本 (Hello, World!)

传统上,学习任何新的编程语言都从编写一个输出 “Hello, World!” 的程序开始。让我们也来写一个PHP版本的。

  1. 创建文件:

    • 打开你的代码编辑器。
    • 创建一个新文件。
    • 将以下代码粘贴到文件中:

    php
    <?php
    echo "Hello, World!";
    ?>

  2. 保存文件:

    • 将文件保存到XAMPP的 htdocs 目录下。
    • 文件名命名为 hello.php (记住后缀必须是 .php)。

    例如,如果你使用Windows,文件路径可能是 C:\xampp\htdocs\hello.php

  3. 运行文件:

    • 确保你的Apache服务器正在运行(通过XAMPP控制面板检查)。
    • 打开你的浏览器。
    • 在地址栏输入 localhost/hello.php 并回车。

    你应该在浏览器页面上看到输出:

    Hello, World!

成功了!你刚刚执行了你的第一个PHP脚本。

代码解释:

  • <?php:这是PHP代码的开始标记。告诉服务器,从这里开始是PHP代码。
  • echo "Hello, World!";echo 是PHP的一个语言结构(非常类似于函数),用于输出字符串。 "Hello, World!" 是要输出的文本字符串。
  • ;:分号标记一个语句的结束。在PHP中,大多数语句都需要以分号结束。
  • ?>:这是PHP代码的结束标记。告诉服务器,PHP代码在这里结束。在文件末尾,通常可以省略结束标记,特别是当文件中只有PHP代码时,这可以避免因末尾空格或换行导致的潜在问题。但作为初学者,写上结束标记也是可以的。

PHP如何与HTML结合?

PHP最强大的地方之一在于它可以轻松地嵌入到HTML中。你可以在一个 .html 文件中加入PHP代码(需要配置服务器,但通常我们将包含PHP代码的文件保存为 .php 后缀),或者更常见的是,在一个 .php 文件中混合使用HTML和PHP。

例如,修改 hello.php 文件如下:

“`html




PHP Hello World

我的第一个PHP页面

这是由PHP输出的段落。

“;
?>

这是普通的HTML段落。


“`

保存文件,然后在浏览器中访问 localhost/hello.php。你会看到一个带有标题和两个段落的网页,其中一个段落的内容是由PHP生成的。

这展示了PHP如何与HTML无缝集成,让你能够动态地控制网页的任何部分。

第四章:PHP基本语法、变量和数据类型

现在我们来学习PHP的一些核心基础知识。

1. PHP标签和执行

我们已经看到了 <?php ... ?> 标记。记住,只有在这对标记之间的代码才会被当作PHP执行,其他部分(比如标记外部的HTML)会被原样发送到浏览器。

还有一些其他的PHP标记风格,但 <?php ... ?> 是标准的推荐方式。

<?= 是一个快捷输出标记,等同于 <?php echo

“`php

使用快捷标签输出变量

Hello, !

“`

这比使用 <?php echo $name; ?> 更简洁。

2. 语句和分号

在PHP中,大多数语句(如赋值、函数调用、控制结构的一部分)都以分号 ; 结束。这是非常重要的,忘记分号会导致语法错误。

“`php

“`

控制结构(如if、for、function定义)本身通常不需要分号,但它们内部的语句需要。

3. 注释

注释是代码中不会被执行的部分,用于解释代码的功能、目的等。良好的注释习惯非常重要。

PHP支持C/C++/Unix风格的注释:

  • 单行注释: //#
    “`php
    <?php
    // 这是一个单行注释
    # 这也是一个单行注释

    echo “你好”; // 在语句末尾也可以添加注释
    ?>
    “`

  • 多行注释: /* ... */
    “`php
    <?php
    /*

    • 这是一个多行注释块。
    • 它可以跨越多行。
    • 用于详细解释一段代码。
      */
      echo “多行注释示例”;
      ?>
      “`

4. 变量

变量是用于存储信息的容器。在PHP中,变量以美元符号 $ 开头,后面跟着变量名。

  • 定义变量: 不需要提前声明变量类型,直接赋值即可。
    php
    <?php
    $name = "Alice"; // 定义一个字符串变量
    $age = 25; // 定义一个整数变量
    $price = 19.99; // 定义一个浮点数变量
    $is_student = true; // 定义一个布尔变量
    ?>

  • 变量命名规则:

    • 必须以 $ 开头。
    • $ 后必须跟着字母或下划线 (_)。
    • 变量名可以包含字母、数字和下划线。
    • 变量名是区分大小写的($name$Name 是不同的变量)。
    • 不能使用PHP的关键字或保留字作为变量名。
  • 使用变量: 通过变量名来访问存储的值。
    “`php
    <?php
    $greeting = “Hello”;
    $target = “World”;

    echo $greeting; // 输出: Hello
    echo ” “;
    echo $target; // 输出: World
    echo “!”;

    // 也可以将变量嵌入到双引号字符串中 (单引号字符串则不会解析变量)
    echo “$greeting $target!”; // 输出: Hello World!
    echo ‘$greeting $target!’; // 输出: $greeting $target!
    ?>
    “`

5. 数据类型

PHP支持多种数据类型,用于存储不同种类的数据。

  • Scalar Types (标量类型): 存储单一值。

    • String (字符串): 文本数据,用单引号 ' 或双引号 " 包围。
      php
      $str1 = "这是一个双引号字符串";
      $str2 = '这是一个单引号字符串';
    • Integer (整型): 非小数的数字(正数、负数或零)。
      php
      $int1 = 100;
      $int2 = -50;
      $int3 = 0;
    • Float (浮点型/双精度型): 带有小数的数字。
      php
      $float1 = 3.14;
      $float2 = -0.01;
      $float3 = 1.2e3; // 科学计数法 1.2 * 10^3 = 1200
    • Boolean (布尔型): 表示真 (true) 或假 (false)。常用于条件判断。
      php
      $is_logged_in = true;
      $has_items = false;
  • Compound Types (复合类型): 存储多个值或更复杂的数据结构。

    • Array (数组): 存储一组有序的数据。可以通过数字索引或字符串键来访问元素。
      “`php
      // 索引数组
      $fruits = array(“Apple”, “Banana”, “Cherry”);
      echo $fruits[0]; // 输出: Apple

      // 关联数组 (键值对)
      $person = array(“name” => “Bob”, “age” => 30);
      echo $person[“name”]; // 输出: Bob
      * **Object (对象):** 类的实例。面向对象编程(OOP)的核心,本教程暂不深入。php
      // 这是一个简单的例子,你现在不需要完全理解
      class Car { public $color; }
      $my_car = new Car();
      $my_car->color = “red”;
      echo $my_car->color; // 输出: red
      “`

  • Special Types (特殊类型):

    • NULL: 表示一个变量没有值。
      php
      $variable = "Hello";
      $variable = null; // 现在 $variable 的值是 NULL
    • Resource (资源): 表示外部资源(如数据库连接、文件句柄)。

检查变量类型和值:

  • gettype(): 获取变量的数据类型字符串。
  • var_dump(): 输出变量的类型、值以及结构信息,对于调试非常有用。
  • print_r(): 输出数组或对象的可读信息。

“`php

“;
echo gettype($age); // 输出: integer
echo “
“;

var_dump($name); // 输出: string(7) “Charlie”
echo “
“;
var_dump($age); // 输出: int(42)
echo “
“;
var_dump($prices); /* 输出:
array(3) {
[0]=> int(10)
[1]=> int(20)
[2]=> int(30)
}
*/
echo “
“;
print_r($prices); /* 输出:
Array
(
[0] => 10
[1] => 20
[2] => 30
)
*/
?>

“`

第五章:PHP运算符

运算符用于对变量或值进行操作。PHP支持多种运算符。

  • 算术运算符: 进行数学计算。

    • + (加)
    • - (减)
    • * (乘)
    • / (除)
    • % (取余)
    • ** (幂 – PHP 5.6+)
      php
      $sum = 10 + 5; // 15
      $diff = 10 - 5; // 5
      $prod = 10 * 5; // 50
      $div = 10 / 5; // 2.0 (结果可能是浮点数)
      $rem = 10 % 3; // 1
      $pow = 2 ** 3; // 8
  • 赋值运算符: 给变量赋值。最常用的是 =

    • = (赋值)
    • += (加后赋值)
    • -= (减后赋值)
    • *= (乘后赋值)
    • /= (除后赋值)
    • %= (取余后赋值)
    • .= (字符串连接后赋值)
      “`php
      $x = 10;
      $x += 5; // $x 现在是 15 (等同于 $x = $x + 5;)

    $text = “Hello”;
    $text .= ” World”; // $text 现在是 “Hello World” (等同于 $text = $text . ” World”;)
    “`

  • 比较运算符: 比较两个值,返回布尔值 (truefalse)。

    • == (等于 – 值相等)
    • === (全等 – 值和类型都相等)
    • !=<> (不等于 – 值不相等)
    • !== (不全等 – 值或类型不相等)
    • > (大于)
    • < (小于)
    • >= (大于等于)
    • <= (小于等于)
      “`php
      $a = 5;
      $b = “5”;

    var_dump($a == $b); // 输出: bool(true) – 值相等
    var_dump($a === $b); // 输出: bool(false) – 值相等但类型不同

    var_dump($a != 10); // 输出: bool(true)
    var_dump($a !== $b); // 输出: bool(true) – 值相等但类型不同

    var_dump($a > 3); // 输出: bool(true)
    ``
    **注意
    =====的区别,===更严格,推荐在需要精确比较时使用===!==`。**

  • 逻辑运算符: 组合条件,返回布尔值。

    • &&and (逻辑与 – 两边都为真则为真)
    • ||or (逻辑或 – 任意一边为真则为真)
    • !not (逻辑非 – 取反)
    • xor (逻辑异或 – 两边不相等时为真)
      “`php
      $is_admin = true;
      $is_editor = false;

    var_dump($is_admin && true); // 输出: bool(true)
    var_dump($is_admin && $is_editor); // 输出: bool(false)

    var_dump($is_admin || $is_editor); // 输出: bool(true)

    var_dump(!$is_editor); // 输出: bool(true)
    “`

  • 自增/自减运算符: 增加或减少变量的值。

    • ++$x (前置自增 – 先增加再返回值)
    • $x++ (后置自增 – 先返回值再增加)
    • --$x (前置自减 – 先减少再返回值)
    • $x-- (后置自减 – 先返回值再减少)
      “`php
      $i = 5;
      $j = $i++; // $j 现在是 5, $i 现在是 6

    $k = 5;
    $l = ++$k; // $l 现在是 6, $k 现在是 6
    “`

  • 字符串运算符: 用于连接字符串。

    • . (连接)
      php
      $greet = "Hello" . " " . "World!"; // $greet 现在是 "Hello World!"

还有一些其他运算符(如数组运算符、错误控制运算符等),但在入门阶段了解这些基本运算符就足够了。

第六章:控制结构 (条件判断与循环)

控制结构允许你根据条件执行不同的代码块,或者重复执行某段代码。

1. 条件判断 (If…Else…Elseif)

if 语句用于在指定条件为 true 时执行一段代码。

“`php

= 60) {
echo “考试及格!”;
}
?>

“`

else 语句用于在 if 条件为 false 时执行另一段代码。

“`php

= 60) {
echo “考试及格!”;
} else {
echo “考试不及格。”;
}
?>

“`

elseif 用于在第一个 if 条件为 false 时,检查另一个条件。你可以有多个 elseif

“`php

= 90) {
echo “成绩优秀!”;
} elseif ($score >= 70) {
echo “成绩良好。”;
} elseif ($score >= 60) {
echo “考试及格。”;
} else {
echo “考试不及格,需要补考。”;
}
?>

“`

2. 条件判断 (Switch)

switch 语句用于基于不同条件执行不同的动作。当你需要根据一个变量的不同可能值来执行不同的代码块时,switch 比多个 elseif 更简洁。

“`php

``
**注意:**
break是必须的,否则代码会继续执行到下一个case(fall-through)。default` 是可选的。

3. 循环 (Loops)

循环用于重复执行一段代码块多次。

  • While 循环: 只要条件为 true,就重复执行代码块。先判断条件,再执行。

    php
    <?php
    $i = 1;
    while ($i <= 5) {
    echo "计数: " . $i . "<br>";
    $i++; // 切记更新循环变量,否则会死循环
    }
    ?>

  • Do-While 循环: 先执行一次代码块,然后只要条件为 true,就重复执行。至少执行一次。

    php
    <?php
    $j = 6;
    do {
    echo "计数: " . $j . "<br>";
    $j++;
    } while ($j <= 5); // 条件为 false,但代码已经执行了一次
    ?>

  • For 循环: 用于已知循环次数的情况,或循环变量有明确的起始、结束和步长。

    php
    <?php
    // for (初始化; 条件; 递增/递减)
    for ($k = 0; $k < 10; $k++) {
    echo "数字: " . $k . "<br>";
    }
    ?>

  • Foreach 循环: 专门用于遍历数组。

    “`php
    <?php
    $colors = array(“red”, “green”, “blue”);

    // 遍历索引数组 (只获取值)
    foreach ($colors as $color) {
    echo “颜色: ” . $color . “
    “;
    }

    $person = array(“name” => “David”, “city” => “New York”);

    // 遍历关联数组 (获取键和值)
    foreach ($person as $key => $value) {
    echo $key . “: ” . $value . “
    “;
    }
    ?>
    “`

4. Break 和 Continue

  • break: 立即终止当前循环(for, while, do-while, foreach)或 switch 语句的执行。
  • continue: 跳过当前循环的剩余部分,直接进入下一次循环迭代。

“`php

“;
}
// 输出:
// 数字: 1
// 数字: 3
?>

“`

第七章:函数

函数是一段可重用的代码块,它执行一个特定的任务。使用函数可以提高代码的组织性、可读性和可维护性。

PHP提供了大量的内置函数,你也可以创建自己的用户定义函数。

1. 用户定义函数

  • 定义函数: 使用 function 关键字。

    “`php
    <?php
    function sayHello() {
    echo “Hello!”;
    }

    function greet($name) { // 带参数的函数
    echo “Hello, ” . $name . “!”;
    }

    function addNumbers($num1, $num2) { // 带两个参数并返回值的函数
    $sum = $num1 + $num2;
    return $sum; // 使用 return 返回结果
    }
    ?>
    “`

  • 调用函数: 使用函数名后跟圆括号 ()

    “`php
    <?php
    sayHello(); // 调用 sayHello 函数
    echo “
    “;

    greet(“PHP Learner”); // 调用 greet 函数并传递参数
    echo “
    “;

    $result = addNumbers(5, 3); // 调用 addNumbers 函数并将返回值赋给变量
    echo “5 + 3 = ” . $result; // 输出: 5 + 3 = 8
    echo “
    “;

    echo “10 + 20 = ” . addNumbers(10, 20); // 直接输出函数的返回值
    ?>
    “`

  • 参数默认值: 可以在参数后面设置默认值。如果调用函数时没有为该参数提供值,将使用默认值。

    “`php
    <?php
    function greetDefault($name = “Guest”) {
    echo “Hello, ” . $name . “!”;
    }

    greetDefault(); // 输出: Hello, Guest!
    echo “
    “;
    greetDefault(“World”); // 输出: Hello, World!
    ?>
    “`

2. 内置函数

PHP有成千上万个内置函数,用于执行各种任务,如字符串处理、数组操作、数据库交互、文件系统操作等。你可以查阅PHP官方手册来了解它们。

一些常用的内置函数例子:

  • strlen(): 获取字符串长度。
  • str_replace(): 替换字符串中的子串。
  • count(): 计算数组中的元素数量。
  • rand(): 生成随机数。
  • date(): 格式化本地日期和时间。

“`php

“;

$new_text = str_replace(“PHP”, “Web Development”, $text);
echo $new_text; // 输出: Learn Web Development is fun!
echo “
“;

$numbers = array(1, 2, 3, 4, 5);
echo “数组元素数量: ” . count($numbers); // 输出: 数组元素数量: 5
echo “
“;

echo “随机数: ” . rand(1, 100); // 输出 1 到 100 之间的一个随机整数
echo “
“;

echo “当前日期: ” . date(“Y-m-d H:i:s”); // 输出当前日期和时间 (例如: 2023-10-27 10:30:00)
?>

“`

3. 变量作用域

变量的作用域是指变量在脚本中哪些部分是可访问的。

  • Local Scope (局部作用域): 在函数内部定义的变量,只能在该函数内部访问。
  • Global Scope (全局作用域): 在函数外部定义的变量,不能直接在函数内部访问。如果想在函数内部访问全局变量,可以使用 global 关键字或 $GLOBALS 数组。
  • Static Scope (静态作用域): static 关键字用于函数内,使得局部变量在函数调用结束后不会丢失其值。

“`php

“`
对于初学者,主要理解局部变量和全局变量的基本区别即可。

第八章:初步了解表单处理

Web开发中一个非常常见的任务是处理用户通过HTML表单提交的数据(比如登录表单、评论表单)。PHP使得处理表单数据变得非常容易。

当用户提交表单时,数据会被发送到服务器。PHP通过特殊的超全局变量来接收这些数据。最常用的两个是:

  • $_GET: 接收通过HTTP GET方法提交的数据。GET方法通常用于请求数据,数据会附加在URL后面(可见)。
  • $_POST: 接收通过HTTP POST方法提交的数据。POST方法通常用于提交数据到服务器创建或更新资源,数据在HTTP请求体中发送(不可见)。

例子:一个简单的问候表单

  1. 创建HTML表单 (index.html):

    “`html
    <!DOCTYPE html>


    问候表单

    <h2>请输入你的名字</h2>
    <form action="greet.php" method="post"> <!-- method="post" 表示使用 POST 方法提交 -->
        名字: <input type="text" name="username"><br><br>
        <input type="submit" value="提交">
    </form>
    



    ``
    将此文件保存到
    htdocs目录下。在浏览器访问localhost/index.html`。

    • action="greet.php": 表单提交后,数据将被发送到 htdocs 目录下的 greet.php 文件进行处理。
    • method="post": 指定使用 POST 方法提交数据。
    • name="username": input 元素的 name 属性非常重要,它决定了在PHP脚本中如何引用这个输入框的值。
  2. 创建PHP处理脚本 (greet.php):

    “`php
    <!DOCTYPE html>


    问候结果

    <h2>问候你!</h2>
    
    <?php
    // 检查是否有通过 POST 提交的 username 数据
    if (isset($_POST['username'])) {
        // 获取通过 POST 提交的 username 的值
        $name = $_POST['username'];
    
        // 简单的输入检查 (虽然非常基础,实际应用需要更严格的验证和过滤)
        if (empty($name)) {
            echo "<p>你没有输入名字!</p>";
        } else {
            // 输出问候信息
            echo "<p>你好," . htmlspecialchars($name) . "!欢迎。</p>";
            // htmlspecialchars() 函数用于将特殊字符转换为 HTML 实体,防止跨站脚本攻击 (XSS) - 这是安全性的一个基本实践。
        }
    } else {
        // 如果不是通过正常的表单提交访问的,给出提示
        echo "<p>请从首页提交表单。</p>";
    }
    ?>
    
    <p><a href="index.html">返回首页</a></p>
    



    ``
    将此文件保存到
    htdocs` 目录下。

    • isset($_POST['username']): 检查 $_POST 数组中是否存在名为 username 的键。$_POST 是一个关联数组,键就是表单元素的 name 属性值。
    • $_POST['username']: 访问 $_POST 数组中键为 username 的值,即用户在输入框中输入的内容。
    • empty($name): 检查变量是否为空。
    • htmlspecialchars($name): 这是处理用户输入时非常重要的一个函数,它可以将 HTML 特殊字符(如 < 转换为 &lt;)转换为它们的 HTML 实体,防止用户输入恶意代码(如 <script>alert('hack')</script>)在你的页面上执行,从而提高安全性。这是入门阶段你需要了解的最基本的安全防护之一。

现在访问 localhost/index.html,在输入框输入你的名字,点击提交,就会跳转到 greet.php 页面,并看到个性化的问候语。

如果将表单的 method="post" 改为 method="get",然后在 greet.php 中使用 $_GET['username'] 来获取数据,你会发现在提交表单后,名字会显示在浏览器地址栏中。

第九章:包含文件

在一个大型网站中,很多部分可能是重复的,比如页眉 (header)、页脚 (footer)、导航菜单、数据库连接配置等。每次都在每个页面中重复编写这些代码是非常低效和难以维护的。PHP提供了文件包含机制来解决这个问题。

你可以创建单独的文件来存放这些重复的代码,然后在需要的地方使用 includerequire 语句将它们包含进来。

  • include 'path/to/file.php';: 包含并执行指定文件。如果文件不存在或发生错误,只会产生警告 (Warning),脚本会继续执行。
  • require 'path/to/file.php';: 包含并执行指定文件。如果文件不存在或发生错误,会产生致命错误 (Fatal Error),脚本会停止执行。

通常,对于必须的文件(如配置文件、函数库),使用 require;对于可选的文件(如页眉页脚),可以使用 include

还有两个变体:

  • include_once 'path/to/file.php';: 类似 include,但确保文件只被包含一次。
  • require_once 'path/to/file.php';: 类似 require,但确保文件只被包含一次。

_once 版本非常有用,可以防止重复包含文件(比如函数定义文件),避免函数重定义错误。

例子:包含页头和页脚

  1. 创建页头文件 (header.php):

    php
    <!DOCTYPE html>
    <html>
    <head>
    <title>我的网站</title>
    <style>
    .header { background-color: #f0f0f0; padding: 10px; text-align: center; }
    .footer { background-color: #ccc; padding: 10px; text-align: center; margin-top: 20px; }
    .content { margin: 20px; }
    </style>
    </head>
    <body>
    <div class="header">
    <h1>我的精彩网站</h1>
    <p>这是页头部分</p>
    </div>
    <div class="content">

  2. 创建页脚文件 (footer.php):

    php
    </div> <!-- 关闭 content div -->
    <div class="footer">
    <p>&copy; <?php echo date("Y"); ?> 我的网站. All rights reserved.</p>
    </div>
    </body>
    </html>

  3. 创建使用包含文件的页面 (about.php):

    “`php
    <?php
    require_once ‘header.php’; // 包含页头,如果文件不存在会报错停止
    ?>

    关于我们

    这是一个关于我们的页面。

    我们可以把公共的部分放在单独的文件里,然后在不同的页面包含它们。

    <?php
    include ‘footer.php’; // 包含页脚,如果文件不存在会警告但继续
    ?>
    ``
    将这三个文件都保存到
    htdocs目录下。然后在浏览器中访问localhost/about.php`。

你会看到一个完整的网页,页头和页脚的内容是通过包含 header.phpfooter.php 文件生成的。这种方式极大地提高了代码的复用性。

第十章:接下来学什么?

恭喜你!你已经掌握了PHP的基础知识,包括环境搭建、基本语法、变量、数据类型、运算符、控制结构、函数以及文件包含和简单的表单处理。这为你进一步学习PHP和Web开发奠定了良好的基础。

但是,这仅仅是PHP世界的冰山一角。要成为一名熟练的PHP开发者,你还需要学习和实践更多内容:

  1. 面向对象编程 (OOP): PHP对OOP提供了强大的支持。学习类、对象、继承、封装、多态等概念,能够帮助你编写结构更清晰、更易于维护和扩展的代码。
  2. 更深入的数据库交互: 学习如何使用mysqli或PDO扩展与MySQL等数据库进行更复杂的操作(增、删、改、查),包括预处理语句(防止SQL注入等安全问题)。
  3. 会话 (Sessions) 和 Cookie: 学习如何使用会话跟踪用户状态(如登录),使用Cookie在用户的浏览器中存储少量信息。
  4. 文件处理: 学习如何读写文件、上传文件等。
  5. 错误处理和异常处理: 学习如何优雅地处理代码中的错误和异常。
  6. 安全性: 学习常见的Web安全威胁(如XSS, CSRF, SQL注入)及其防护方法。
  7. Composer: PHP的依赖管理工具,学习如何使用它来管理项目所需的第三方库。
  8. PHP框架: 学习使用流行的PHP框架,如Laravel, Symfony, CodeIgniter等。框架提供了一套约定俗成的开发规范和大量现成的组件,能够极大地提高开发效率和代码质量。这是现代PHP开发的主流方式。
  9. API开发: 学习如何使用PHP构建RESTful API。
  10. 版本控制: 学习使用Git进行代码版本管理。
  11. 前端技术: 虽然你是后端开发者,但了解HTML, CSS, JavaScript (特别是Ajax) 将帮助你更好地与前端协作或进行全栈开发。

实践是最好的老师:

学习编程最重要的是动手实践。尝试用你学到的知识去构建一些小项目:

  • 一个简单的留言板。
  • 一个用户注册和登录系统。
  • 一个待办事项列表 (To-Do List)。
  • 一个简单的新闻发布系统。

在实践中遇到问题,尝试自己查找资料解决,这将是宝贵的学习经验。

结论

恭喜你完成了这篇PHP零基础快速入门教程!从环境搭建到基本语法,你已经迈出了坚实的第一步。

PHP是一门强大且用途广泛的语言。掌握了基础后,继续深入学习,探索它的更多功能和现代开发实践。保持好奇心,不断练习,你一定能够成为一名优秀的PHP开发者!

祝你学习顺利,编程愉快!


发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部