PHP 入门教程 – wiki基地


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

欢迎来到 PHP 的世界!如果你渴望构建动态网站、与数据库交互、处理用户输入,或者只是想了解服务器端编程是如何工作的,那么学习 PHP 是一个绝佳的选择。PHP 是一种广泛使用的开源服务器端脚本语言,特别适用于 Web 开发,并且可以嵌入 HTML 中。

本教程将带你从零开始,一步步了解 PHP 的基础知识,包括环境搭建、基本语法、变量、数据类型、控制结构、函数、数组以及如何处理表单数据。无需担心你没有任何编程经验,本教程将尽量以最简单的方式来解释每一个概念。

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

第一章:PHP 是什么?为什么选择它?

1.1 什么是 PHP?

PHP(全称:PHP: Hypertext Preprocessor,超文本预处理器)是一种流行的通用脚本语言,尤其适合于 Web 开发。它通常运行在服务器端,处理网页上的动态内容。

简单来说,传统的 HTML 页面是静态的,无论谁访问、何时访问,看到的内容都是一样的。而 PHP 可以让你的网页根据不同的条件(比如用户登录状态、数据库中的最新数据、时间等)生成不同的内容。

PHP 代码通常写在一个 .php 文件中,服务器在向用户的浏览器发送网页之前,会先执行这些 PHP 代码,将结果(通常是 HTML)发送出去。

1.2 为什么选择 PHP?

  • 易学易用: PHP 的语法相对简单,借鉴了 C、Java 和 Perl 等语言的优点,对于初学者来说非常友好。
  • 功能强大: 它可以做任何脚本语言能做的事情,特别是服务器端 Web 开发。它能处理表单、生成动态页面内容、发送和接收 Cookies、与数据库交互(支持几乎所有数据库)、处理文件上传、发送电子邮件等等。
  • 广泛应用: 全球超过 75% 的网站(包括 WordPress、Facebook、维基百科等)都在使用 PHP。这意味着大量的资源、社区支持和现成的框架/库可供利用。
  • 开源免费: PHP 是免费的,你可以自由使用和修改它。
  • 跨平台: PHP 可以在几乎所有操作系统上运行(Windows, macOS, Linux, Unix 等)。
  • 良好的文档和社区支持: PHP 官方网站 (php.net) 提供了非常详细的文档。庞大的社区意味着你遇到问题时很容易找到答案和帮助。

第二章:搭建 PHP 开发环境

要在本地计算机上运行 PHP 代码,你需要一个 Web 服务器、PHP 解释器以及可能还有一个数据库(在本入门教程的早期阶段不是必须的)。幸运的是,有许多集成软件包可以让你一键安装所有必需的组件。

最流行的集成环境包括:

  • XAMPP: (X-platform, Apache, MySQL, PHP, Perl) 跨平台支持,适用于 Windows, macOS, Linux。
  • WampServer: (Windows, Apache, MySQL, PHP) 适用于 Windows。
  • MAMP: (Macintosh, Apache, MySQL, PHP) 适用于 macOS。

任选一个适合你操作系统的下载并安装。以 XAMPP 为例,安装过程通常非常简单:

  1. 访问 Apache Friends 官网 (apachefriends.org),下载适合你操作系统的 XAMPP 安装包。
  2. 运行下载的安装程序。
  3. 按照安装向导的提示进行安装。大多数情况下,默认选项即可。确保勾选安装 Apache 和 PHP。
  4. 安装完成后,启动 XAMPP 控制面板(或 WampServer/MAMP 控制面板)。
  5. 在控制面板中,启动 Apache 服务。如果你计划使用数据库,也启动 MySQL 服务。

重要提示:

  • 成功启动 Apache 后,打开浏览器,访问 http://localhosthttp://127.0.0.1。如果看到 XAMPP、WampServer 或 MAMP 的欢迎页面,说明你的 Web 服务器已经正常工作了。
  • 你的 Web 项目文件需要放在 Web 服务器指定的目录中才能被访问和执行。对于 XAMPP 和 WampServer,这个目录通常是安装目录下的 htdocswww 文件夹。对于 MAMP,通常是 /Applications/MAMP/htdocs。我们将在这些文件夹中创建 PHP 文件。

第三章:你的第一个 PHP 脚本

环境搭建好了,让我们来写一个最简单的 PHP 脚本。

  1. 打开你喜欢的文本编辑器(如 VS Code, Sublime Text, Notepad++, Atom 等)。
  2. 创建一个新文件。
  3. 输入以下代码:

    “`php
    <!DOCTYPE html>


    我的第一个 PHP 页面

    PHP 基础

    <?php
    echo “Hello, PHP!”;
    ?>



    ``
    4. 将文件保存到你的 Web 服务器根目录(
    htdocswww文件夹)下,命名为index.php(或者其他任何以.php结尾的名字)。
    5. 打开浏览器,访问
    http://localhost/index.php(如果你保存为其他名字,就访问http://localhost/你的文件名.php`)。

你应该会在浏览器中看到一个标题为 “PHP 基础”,内容为 “Hello, PHP!” 的页面。

代码解释:

  • <!DOCTYPE html> ... </html>:这是标准的 HTML 结构。PHP 代码通常嵌入在 HTML 中。
  • <?php ... ?>:这是 PHP 代码块的标记。所有 PHP 代码都必须放在这对标记之间。 服务器只会处理这对标记中的内容,将处理结果(通常是字符串或变量的值)输出到 HTML 流中。这对标记之外的内容会被视为普通 HTML 发送给浏览器。
  • echo "Hello, PHP!";echo 是 PHP 中用于输出内容到浏览器(更准确地说,输出到服务器生成的响应中)的语句。在这里,它输出了一个字符串 "Hello, PHP!"
  • ;:在 PHP 中,大多数语句都需要用分号 ; 结束。这是一个非常重要的语法规则。

试一试:

  • 修改 echo 语句的内容,比如 echo "你好,世界!";,保存并刷新浏览器看看结果。
  • <?php ... ?> 块外面添加一些普通的 HTML 内容,看看它们是否正常显示。
  • 尝试移除 ; 看看会发生什么(通常会导致语法错误)。

第四章:PHP 基本语法

在深入学习之前,我们需要了解一些 PHP 的基本语法规则。

4.1 PHP 标签

最常用的 PHP 标签是 <?php ... ?>。这是推荐的标准标签。

还有一些其他类型的标签,但不推荐在新的代码中使用:
* 短开放标签:<? ... ?> (需要配置,不建议使用)
* ASP 风格标签:<% ... %> (需要配置,不建议使用)
* HTML 脚本标签:<script language="php"> ... </script> (已废弃,不建议使用)

强烈建议始终使用标准标签 <?php ... ?>

4.2 PHP 语句

如前所述,PHP 中的大多数语句都以分号 ; 结束。这表示一个语句的结束。

“`php

“`

即使只有一条语句,也应该加上分号(虽然在 PHP 代码块的最后一个语句后分号是可选的,但加上是好习惯,避免以后添加新语句时出错)。

4.3 PHP 注释

注释是写在代码中用来解释代码或临时禁用代码的文本,它们会被 PHP 解释器忽略。注释对于理解代码非常重要。

PHP 支持两种注释风格:

  • 单行注释: 使用 //#。从 //# 到行末的所有内容都是注释。

    “`php
    <?php
    // 这是一个单行注释,解释下面的代码
    echo “Hello World!”; // 这是行末注释

    # 这也是一个单行注释
    echo "PHP rocks!";
    

    ?>
    ``
    * **多行注释:** 使用
    //。介于//` 之间的所有内容都是注释。

    php
    <?php
    /*
    * 这是一个多行注释。
    * 它可以跨越多行,用于更详细的解释。
    */
    echo "多行注释示例";
    ?>

4.4 PHP 对大小写敏感吗?

  • 变量名 对大小写敏感。$name$Name 是两个不同的变量。
  • 函数名、类名、关键字(如 if, else, while, echo 等) 对大小写不敏感。echo, ECHO, eChO 都是一样的。

尽管函数名和关键字不区分大小写,但 强烈建议 统一使用小写(这是最常见的约定)或驼峰命名法/帕斯卡命名法(对于类名),以提高代码的可读性。而变量名则严格区分大小写,必须小心使用。

第五章:PHP 变量

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

5.1 声明和赋值

PHP 是一种弱类型语言,你不需要在使用变量之前声明它的数据类型。当你第一次给变量赋值时,它就自动被创建了。

“`php

“; // HTML 换行标签
echo $age;
?>

“`

5.2 变量命名规则

  • 变量名必须以 $ 符号开始。
  • 变量名必须以字母或下划线 _ 开头。
  • 变量名不能以数字开头。
  • 变量名只能包含字母、数字和下划线 _ (a-z, A-Z, 0-9, 和 _)。
  • 变量名不能包含空格。
  • 变量名区分大小写($age$Age 是不同的变量)。

合法的变量名示例: $myVariable, $var123, $_name, $total_price
非法的变量名示例: $-variable, $123var, $my variable

5.3 PHP 数据类型

PHP 支持以下几种基本数据类型:

  • String (字符串): 存储文本。字符串可以用单引号 ' 或双引号 " 包围。

    php
    <?php
    $txt1 = "Hello world!";
    $txt2 = '你好 PHP!';
    echo $txt1;
    echo $txt2;
    ?>

    注意: 双引号内的变量会被解析,而单引号内的变量不会。

    php
    <?php
    $name = "张三";
    echo "我的名字是 $name"; // 输出: 我的名字是 张三
    echo '我的名字是 $name'; // 输出: 我的名字是 $name
    ?>

    使用双引号时,如果变量名后面紧跟着其他字符,可能需要使用花括号 {} 包围变量名以明确界限:echo "我的名字是 {$name}。";

  • Integer (整型): 存储非小数的数字。

    php
    <?php
    $age = 30;
    $count = -100;
    echo $age;
    ?>

  • Float (浮点型 / 双精度型): 存储带小数的数字或指数形式的数字。

    php
    <?php
    $price = 19.99;
    $pi = 3.14159;
    $big_number = 1.2e3; // 1200
    echo $price;
    ?>

  • Boolean (布尔型): 存储 truefalse。常用于条件判断。

    php
    <?php
    $is_logged_in = true;
    $is_admin = false;
    ?>

  • Array (数组): 存储多个值在一个单一变量中。

    php
    <?php
    $cars = array("Volvo", "BMW", "Toyota");
    echo $cars[0]; // 输出: Volvo
    ?>

    我们将在后面详细介绍数组。

  • Object (对象): 类的一个实例。

    php
    <?php
    class Car {
    public $model;
    function __construct($model) {
    $this->model = $model;
    }
    }
    $myCar = new Car("Volvo");
    echo $myCar->model; // 输出: Volvo
    ?>

    对象是面向对象编程 (OOP) 的概念,对于初学者来说可以暂时了解即可。

  • NULL: 一个特殊类型,表示变量没有值。

    php
    <?php
    $x = "Hello";
    $x = null; // 现在 $x 的值为 NULL
    ?>

  • Resource (资源): 特殊变量,保存了外部资源的一个引用,例如数据库连接或文件句柄。

    php
    <?php
    // 连接数据库或打开文件时会返回资源类型
    // $db_conn = mysqli_connect(...); // $db_conn 就是一个资源
    ?>

5.4 获取变量类型和值:var_dump()print_r()

这两个函数对于调试非常有用,可以打印出变量的详细信息。

  • var_dump(): 显示变量的数据类型、值、长度等。
  • print_r(): 主要用于打印数组或对象的结构,可读性更好。

“`php

“;
var_dump($age);
echo “
“;
var_dump($cars);
echo “
“;
var_dump($is_student);
echo “
“;
var_dump($price);
echo “
“;
var_dump($empty_var);
echo “
“;

echo “


“; // HTML 分隔线

print_r($cars);
echo “
“;
// print_r($name); // print_r 也可以用于非数组,但输出简单
?>

``
输出会显示变量的类型和值,例如
string(6) “张三”` 表示一个长度为 6 的字符串,值为 “张三”(注意 UTF-8 编码下中文字符通常占 3 个字节)。

第六章:PHP 常量

常量是一个在脚本执行过程中不能改变的值。常量不需要以 $ 符号开头。

定义常量使用 define() 函数:

define(name, value, case_insensitive)

  • name: 常量的名称(字符串)。
  • value: 常量的值。
  • case_insensitive: 可选,布尔值。如果为 true,则常量名不区分大小写。默认为 false(区分大小写)。

“`php

“;
echo MAX_SIZE;
echo “
“;
echo greeting; // 由于定义时设置了 true,这里使用小写也可以
echo “
“;
echo GREETING; // 使用大写也可以
?>

“`

常量名称的约定是使用大写字母和下划线。

第七章:PHP 运算符

运算符用于对值和变量执行操作。

7.1 算术运算符

用于执行数学运算。

  • + (加)
  • - (减)
  • * (乘)
  • / (除)
  • % (取模 – 余数)
  • ** (幂 – 指数,PHP 5.6+)

“`php

“;
echo $x – $y; // 输出 5
echo “
“;
echo $x * $y; // 输出 50
echo “
“;
echo $x / $y; // 输出 2
echo “
“;
echo $x % $y; // 输出 0 (10 除以 5 余 0)
echo “
“;
echo $x ** $y; // 输出 100000 (10 的 5 次方)
?>

“`

7.2 赋值运算符

用于将值赋给变量。最基本的是 =

  • = (简单赋值)
  • += (加后赋值): $x += $y 等同于 $x = $x + $y
  • -= (减后赋值): $x -= $y 等同于 $x = $x - $y
  • *= (乘后赋值): $x *= $y 等同于 $x = $x * $y
  • /= (除后赋值): $x /= $y 等同于 $x = $y / $y
  • %= (取模后赋值): $x %= $y 等同于 $x = $x % $y
  • .= (字符串连接后赋值): $txt .= $more_txt 等同于 $txt = $txt . $more_txt

“`php

“;

$txt = “Hello”;
$txt .= ” World!”; // $txt 现在是 “Hello World!”
echo $txt;
?>

“`

7.3 比较运算符

用于比较两个值,返回布尔值 (truefalse)。

  • == (等于): 值相等
  • === (全等): 值和数据类型都相等
  • !=<> (不等于): 值不相等
  • !== (不全等): 值或数据类型不相等
  • > (大于)
  • < (小于)
  • >= (大于或等于)
  • <= (小于或等于)
  • <=> (太空船运算符 – PHP 7+): 如果左侧小于/等于/大于右侧,分别返回 -1, 0, 1

“`php

$b); // 输出 bool(false)
var_dump($a < $b); // 输出 bool(true) var_dump($a >= $c); // 输出 bool(true)
var_dump($a <=> $b); // 输出 int(-1) (PHP 7+)
var_dump($a <=> $c); // 输出 int(0) (PHP 7+)
var_dump($b <=> $a); // 输出 int(1) (PHP 7+)
?>

``
**特别注意
=====的区别!**===` 更严格,要求类型也一致。

7.4 逻辑运算符

用于组合条件语句。

  • &&and (逻辑与): 如果两个条件都为 true,则结果为 true。
  • ||or (逻辑或): 如果至少一个条件为 true,则结果为 true。
  • ! (逻辑非): 反转条件的结果。

“`php

20 && $is_student) {
echo “大于 20 岁且是学生”; // 条件为 true,执行
}

echo “
“;

$score = 85;
if ($score < 60 || $score > 90) {
echo “分数不及格或优秀”; // 条件为 false,不执行
}

echo “
“;

$is_admin = false;
if (!$is_admin) {
echo “不是管理员”; // 条件为 true,执行
}
?>

“`

7.5 字符串运算符

  • . (连接): 用于连接两个字符串。
  • .= (连接赋值): 将右边的字符串连接到左边的字符串变量上。

“`php

“;

$txt3 = “PHP “;
$txt3 .= “is great!”; // $txt3 现在是 “PHP is great!”
echo $txt3;
?>

“`

第八章:PHP 控制结构 (条件和循环)

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

8.1 条件语句

  • if 语句: 如果条件为 true,则执行代码块。

    php
    <?php
    $t = date("H"); // 获取当前小时 (0-23)
    if ($t < 20) {
    echo "祝你有个好白天!";
    }
    ?>

    * if…else 语句: 如果条件为 true,执行 if 代码块;否则,执行 else 代码块。

    php
    <?php
    $t = date("H");
    if ($t < 20) {
    echo "祝你有个好白天!";
    } else {
    echo "祝你有个好夜晚!";
    }
    ?>

    * if…elseif…else 语句: 测试多个条件。

    php
    <?php
    $score = 85;
    if ($score >= 90) {
    echo "优秀";
    } elseif ($score >= 75) {
    echo "良好";
    } elseif ($score >= 60) {
    echo "及格";
    } else {
    echo "不及格";
    }
    ?>

    * switch 语句: 用于执行基于不同条件的多个操作。它对一个单一变量进行评估,并根据变量的值执行相应的代码块。

    “`php
    <?php
    $favcolor = “red”;

    switch ($favcolor) {
        case "red":
            echo "你喜欢的颜色是红色!";
            break; // break 语句用于终止 case 的执行
        case "blue":
            echo "你喜欢的颜色是蓝色!";
            break;
        case "green":
            echo "你喜欢的颜色是绿色!";
            break;
        default: // 如果所有 case 都不匹配,则执行 default
            echo "你喜欢的颜色不是红、蓝或绿!";
    }
    

    ?>
    “`

8.2 循环语句

循环用于重复执行同一段代码块,直到指定条件不再满足。

  • while 循环: 只要指定的条件为 true,就重复执行代码块。

    php
    <?php
    $i = 1; // 初始化计数器
    while ($i <= 5) { // 条件
    echo "数字是:" . $i . "<br>";
    $i++; // 更新计数器
    }
    ?>

    * do…while 循环: 先执行一次代码块,然后只要指定的条件为 true,就重复执行。这保证代码块至少会执行一次。

    php
    <?php
    $i = 1;
    do {
    echo "数字是:" . $i . "<br>";
    $i++;
    } while ($i <= 5); // 条件
    ?>

    * for 循环: 用于明确知道循环次数的情况。

    for (初始化计数器; 测试条件; 更新计数器)

    php
    <?php
    for ($i = 0; $i <= 10; $i++) {
    echo "数字是:" . $i . "<br>";
    }
    ?>

    * foreach 循环: 用于遍历数组。

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

    // 遍历索引数组
    foreach ($colors as $value) {
        echo $value . "<br>";
    }
    
    echo "<hr>";
    
    // 遍历关联数组 (key => value)
    $age = array("Peter"=>"35", "Ben"=>"37", "Joe"=>"43");
    foreach ($age as $name => $val) {
        echo $name . " is " . $val . " years old.<br>";
    }
    

    ?>
    “`

第九章:PHP 函数

函数是一段可以重复使用的代码块。你可以定义自己的函数,也可以使用 PHP 内置的函数。

9.1 创建用户自定义函数

  • 函数名必须以字母或下划线开头。
  • 函数名不能以数字开头。
  • 函数名只能包含字母、数字和下划线。

“`php

“;

// 定义一个带参数的函数
function greet($name) {
echo “你好,” . $name . “!”;
}

// 调用带参数的函数
greet(“张三”); // 输出 “你好,张三!”
echo “
“;
greet(“李四”); // 输出 “你好,李四!”

echo “
“;

// 定义一个带默认参数的函数
function greet_city($city = “上海”) {
echo “欢迎来到 ” . $city . “!”;
}
greet_city(“北京”); // 输出 “欢迎来到 北京!”
echo “
“;
greet_city(); // 输出 “欢迎来到 上海!”

echo “
“;

// 定义一个带返回值的函数
function sum($x, $y) {
$z = $x + $y;
return $z; // 使用 return 语句返回结果
}

$result = sum(5, 3);
echo “5 + 3 = ” . $result; // 输出 “5 + 3 = 8”
?>

“`

9.2 PHP 内置函数

PHP 提供了大量的内置函数,用于执行各种任务。你可以访问 php.net 查看完整的函数参考手册。

“`php

“;

// 字符串查找
echo strpos(“Hello world!”, “world”); // 输出 6 (w 的位置,从 0 开始)
echo “
“;

// 日期和时间
echo “今天是 ” . date(“Y/m/d”); // 输出类似 “今天是 2023/10/27”
echo “
“;

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

“`

第十章:PHP 数组

数组可以在一个变量中存储多个值。

10.1 索引数组

以数字索引访问元素,索引默认从 0 开始。

“`php

“;
echo $cars[1]; // 输出: BMW

// 修改数组元素
$cars[2] = “Honda”;
echo “
“;
echo $cars[2]; // 输出: Honda

// 获取数组长度
echo “
数组长度: ” . count($cars); // 输出 数组长度: 3

// 遍历索引数组
echo “

汽车列表:

“;
for ($i = 0; $i < count($cars); $i++) { echo $cars[$i] . "
“;
}
?>

“`

10.2 关联数组

使用命名的键(key)而不是数字索引来访问元素。

“`php

“35”, “Ben”=>”37”, “Joe”=>”43”);
// 或者使用短语法 (PHP 5.4+)
// $age = [“Peter”=>”35”, “Ben”=>”37”, “Joe”=>”43”];

// 访问数组元素
echo “Peter is ” . $age[‘Peter’] . ” years old.”; // 输出: Peter is 35 years old.
echo “
“;

// 修改数组元素
$age[‘Joe’] = “45”;
echo “Joe is now ” . $age[‘Joe’] . ” years old.”; // 输出: Joe is now 45 years old.

// 遍历关联数组 (通常使用 foreach)
echo “

姓名和年龄:

“;
foreach ($age as $name => $val) {
echo $name . ” is ” . $val . ” years old.
“;
}
?>

“`

10.3 多维数组

包含一个或多个数组的数组。

“`php

“;
echo $cars[1][0].”: 库存 “.$cars[1][1].”, 已售 “.$cars[1][2].”.
“;
echo $cars[2][0].”: 库存 “.$cars[2][1].”, 已售 “.$cars[2][2].”.
“;
echo $cars[3][0].”: 库存 “.$cars[3][1].”, 已售 “.$cars[3][2].”.
“;

echo “


“;

// 使用循环遍历多维数组
for ($row = 0; $row < count($cars); $row++) { echo "

第 {$row} 行:

“;
echo “

    “;
    for ($col = 0; $col < count($cars[$row]); $col++) { echo "
  • ” . $cars[$row][$col] . “
  • “;
    }
    echo “

“;
}
?>

“`

数组是 PHP 中非常重要的数据结构,掌握它对于处理复杂数据至关重要。

第十一章:PHP 包含文件

当你在多个页面中使用相同的内容时(如头部、尾部、导航菜单),将这些内容单独保存到一个文件中,然后在需要的地方包含(include)或引入(require)这些文件会非常方便。这有助于提高代码的可维护性。

  • include 'filename';
  • require 'filename';

includerequire 的主要区别在于如何处理错误:

  • include: 如果包含的文件不存在或包含错误,会发出一个警告(warning),脚本会继续执行。
  • require: 如果包含的文件不存在或包含错误,会发出一个致命错误(fatal error),脚本会停止执行。

通常,对于应用程序必须依赖的文件(如数据库连接配置),使用 require 更合适,因为文件丢失意味着应用无法正常工作;对于非关键的文件(如页脚),可以使用 include

还有 include_oncerequire_once,它们的作用是确保文件只被包含或引入一次,避免重复包含导致函数重定义等错误。

“`php

我的网站头部

这是一些头部内容。


*/
?>

© 2023 我的网站. 保留所有权利。

*/
?>

欢迎来到我的主页!

这里是主页的内容。

``
如果你访问
index.php,你将看到header.php的内容、index.php的内容以及footer.php` 的内容组合在一起。

第十二章:PHP 表单处理

Web 应用程序的核心功能之一就是处理用户提交的表单数据。PHP 通过全局变量 $_GET$_POST 来获取表单数据。

一个基本的 HTML 表单:

“`html




表单处理





``
这个表单的
action属性指定了数据将被发送到process_form.php文件进行处理,method` 属性指定了使用 HTTP 的 POST 方法。

现在创建 process_form.php 文件来接收和处理这些数据:

“`php




表单处理结果

处理表单数据

“;

// 获取并输出邮箱
$email = $_POST[’email’];
echo “您提交的邮箱是: ” . $email . “
“;

// 实际应用中,这里通常会对数据进行验证、清洗,然后存储到数据库或执行其他操作
} else {
echo “请通过表单提交数据。”;
}
?>


``
将这两个文件都放在你的
htdocswww目录下。先访问包含表单的 HTML 文件(可以直接双击打开,或者通过http://localhost/你的html文件名.html访问),填写信息后提交,就会跳转到process_form.php` 并显示提交的数据。

  • $_GET: 用于收集使用 GET 方法发送的表单数据。数据会附加到 URL 后面,可以在浏览器地址栏中看到。适合发送不敏感、少量的数据,或者用于书签、分享链接等。
  • $_POST: 用于收集使用 POST 方法发送的表单数据。数据在 HTTP 请求体中发送,用户在地址栏中看不到。适合发送敏感或大量的数据,如登录信息、长文本等。

重要提示: 直接将用户输入的数据显示出来存在安全风险(跨站脚本攻击 XSS)。在实际开发中,永远不要直接输出从 $_GET, $_POST, $_REQUEST 等获取的数据。你需要使用函数对数据进行过滤和转义,例如 htmlspecialchars() 来防止 XSS 攻击。

“`php

“;
echo “您提交的邮箱是: ” . $email . “
“;
} else {
echo “请通过表单提交数据。”;
}
?>

“`

这只是表单处理的入门,实际应用中还需要进行更复杂的数据验证(比如检查邮箱格式是否正确、年龄是否为数字等)。

第十三章:连接数据库 (概念介绍)

大多数动态网站都需要与数据库交互来存储和检索数据。PHP 对各种数据库提供了广泛的支持,其中最常用的是 MySQL。

在 PHP 中连接数据库通常使用以下方式:

  1. MySQLi 扩展: (MySQL Improved) 专用于 MySQL 数据库。支持面向对象和面向过程两种风格。
  2. PDO (PHP Data Objects): 一个数据库抽象层,提供统一的接口连接多种类型的数据库(MySQL, PostgreSQL, SQLite, SQL Server 等)。这是推荐的方式,因为它提高了代码的可移植性。

连接数据库的基本步骤通常是:

  1. 使用连接函数建立与数据库服务器的连接(需要数据库地址、用户名、密码等信息)。
  2. 选择要使用的数据库。
  3. 执行 SQL 查询(如 SELECT, INSERT, UPDATE, DELETE)。
  4. 处理查询结果。
  5. 关闭数据库连接。

这是一个使用 MySQLi (面向过程) 连接并查询数据的简单概念示例(请注意,这只是概念,实际代码需要更多细节和错误处理):

“`php

0) {
// 输出数据
while($row = mysqli_fetch_assoc($result)) {
echo “id: ” . $row[“id”]. ” – Name: ” . $row[“firstname”]. ” ” . $row[“lastname”]. “
“;
}
} else {
echo “0 结果”;
}

// 关闭连接
mysqli_close($conn);
?>

“`
数据库操作是一个相对复杂的主题,涉及到 SQL 语言、安全性(SQL 注入)、性能优化等,对于初学者来说,先理解其概念和在 PHP 中的位置即可,更深入的学习可以在掌握 PHP 基础后进行。

第十四章:错误处理

在开发过程中,你会遇到各种错误。了解如何处理错误对于调试和构建健壮的应用至关重要。

PHP 的错误有很多级别(Notice, Warning, Error, Fatal Error 等)。

  • 在开发阶段, 建议开启所有错误报告并显示错误信息,以便及时发现问题。可以在脚本开头添加:

    php
    <?php
    ini_set('display_errors', 1); // 显示错误到屏幕
    ini_set('display_startup_errors', 1); // 显示启动错误
    error_reporting(E_ALL); // 报告所有错误类型
    ?>

    * 在生产环境, 应该关闭错误显示,并将错误记录到日志文件中,以避免泄露敏感信息和影响用户体验。可以在 php.ini 文件中设置,或者在脚本开头设置:

    php
    <?php
    ini_set('display_errors', 0); // 关闭错误显示
    ini_set('log_errors', 1); // 开启错误日志
    ini_set('error_log', '/path/to/your/php_error.log'); // 指定日志文件路径 (确保 PHP 进程有写入权限)
    ?>

理解错误报告有助于你更快地定位问题。当遇到错误时,仔细阅读错误消息,它通常会告诉你错误类型、发生错误的文件以及行号。

第十五章:下一步学习什么?

恭喜你!你已经掌握了 PHP 的基本语法和核心概念。这为你继续深入学习 PHP 打下了坚实的基础。接下来,你可以继续学习:

  • 面向对象编程 (OOP): 类、对象、继承、封装、多态等。OOP 可以帮助你编写更结构化、可维护的代码。
  • 数据库深入: PDO 或 MySQLi 的详细使用,SQL 语言,数据库设计和优化。
  • 文件操作: 读写文件、上传文件等。
  • 会话 (Sessions) 和 Cookies: 用于跟踪用户状态。
  • 安全性: SQL 注入、XSS、CSRF、密码哈希等常见的 Web 安全问题及防范。
  • Composer: PHP 的依赖管理工具,用于管理项目所需的外部库。
  • PSR (PHP Standard Recommendations): PHP 社区推荐的编码规范和标准。
  • PHP 框架: Laravel, Symfony, CodeIgniter 等。框架提供了现成的结构和工具,可以极大地提高开发效率。
  • RESTful API 开发: 使用 PHP 构建应用程序接口。
  • 版本控制: Git 的使用。

实践是最好的老师。 尝试用你学到的知识去构建一些简单的项目,比如一个留言板、一个简单的用户注册登录系统等。在实践中你会遇到更多问题,并通过解决问题来加深理解。

总结

本教程带你了解了 PHP 的基础知识,包括:

  • PHP 的作用和优势
  • 如何搭建 PHP 开发环境 (XAMPP/WAMP/MAMP)
  • 你的第一个 PHP 脚本 Hello World
  • PHP 基本语法 (标签、语句、注释、大小写)
  • 变量和数据类型
  • 常量
  • 常用运算符
  • 控制结构 (if/else, switch, 循环)
  • 函数 (自定义函数和内置函数)
  • 数组 (索引数组、关联数组、多维数组)
  • 包含文件 (include/require)
  • 表单处理 ($_GET, $_POST, 安全注意事项)
  • 数据库连接概念
  • 错误处理基础

掌握这些基础知识只是第一步。PHP 的世界非常广阔,不断学习和实践是你成为一名优秀的 PHP 开发者的必经之路。

祝你在学习 PHP 的旅途中一切顺利!希望这篇教程对你有所帮助。现在,就开始你的 PHP 编程之旅吧!


发表评论

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

滚动至顶部