PHP零基础快速入门教程:从零开始构建你的第一个动态网站
欢迎来到PHP的世界!如果你对创建动态网站充满好奇,或者想成为一名后端开发者,那么PHP是一个非常棒的起点。它易于学习,功能强大,并且拥有一个庞大而活跃的社区。
本教程专为完全没有PHP经验的零基础学习者设计。我们将从最基本的概念讲起,一步步带你搭建环境、理解语法,并最终能够编写简单的PHP脚本,为你未来的进阶学习打下坚实基础。
预计阅读时间: 约30分钟
预计实践时间: 约1-2小时(强烈建议边学边练)
本教程的目标
学完本教程,你将能够:
- 了解PHP在Web开发中的作用。
- 搭建PHP开发环境。
- 编写你的第一个PHP脚本。
- 理解PHP的基本语法、变量和数据类型。
- 掌握常用的运算符。
- 学会使用条件判断和循环结构。
- 了解函数的定义和使用。
- 初步了解如何处理表单数据。
- 知道接下来可以学习哪些内容。
准备好了吗?让我们开始这段激动人心的编程之旅!
第一章: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代码需要在服务器上执行。对于初学者来说,最简单的方式是在自己的电脑上搭建一个本地服务器环境。这个环境通常包含:
- Web服务器: 接收浏览器请求并返回响应(常用的是Apache或Nginx)。
- PHP解释器: 执行PHP代码。
- 数据库(可选但常用): 存储和管理数据(常用的是MySQL或MariaDB)。
将这三者(以及有时加上Perl/Python等)打包在一起的软件集合被称为 AMP。根据你使用的操作系统不同,常见的AMP软件包有:
- XAMPP: 跨平台 (Windows, macOS, Linux)
- WAMP: 适用于 Windows
- MAMP: 适用于 macOS
- LAMP: 适用于 Linux (通常是独立安装各个组件)
对于初学者,XAMPP 是一个非常好的选择,因为它支持跨平台且安装配置简单。本教程将以XAMPP为例进行讲解。
安装XAMPP步骤:
-
下载XAMPP:
- 访问 Apache Friends 官方网站:
https://www.apachefriends.org/
- 根据你的操作系统,下载对应的最新版本。
- 访问 Apache Friends 官方网站:
-
运行安装程序:
- 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 ./[文件名]
)。按照终端提示进行安装。
- Windows: 双击下载的
-
启动XAMPP控制面板:
- Windows: 在开始菜单找到 XAMPP,点击 “XAMPP Control Panel”。
- macOS: 在Applications文件夹中找到XAMPP,双击运行,或者从启动器中找到。
- Linux: 通常在终端输入
sudo /opt/lampp/manager-linux-x64.run
(路径可能因安装位置和版本不同而异) 或使用图形界面的启动器。
-
启动 Apache 和 MySQL:
- 在XAMPP控制面板中,你会看到 Apache 和 MySQL 的模块。点击它们旁边的 “Start” 按钮。
- 如果启动成功,模块名称后面的状态会变为绿色,并且会显示对应的端口号(Apache通常是80和443,MySQL通常是3306)。
- 如果启动失败,通常是因为端口被其他程序占用。你可以在控制面板中点击 Config 按钮修改端口,或者关闭占用端口的程序。
-
测试环境是否搭建成功:
- 打开你的浏览器。
- 在地址栏输入
localhost
或127.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版本的。
-
创建文件:
- 打开你的代码编辑器。
- 创建一个新文件。
- 将以下代码粘贴到文件中:
php
<?php
echo "Hello, World!";
?> -
保存文件:
- 将文件保存到XAMPP的
htdocs
目录下。 - 文件名命名为
hello.php
(记住后缀必须是.php
)。
例如,如果你使用Windows,文件路径可能是
C:\xampp\htdocs\hello.php
。 - 将文件保存到XAMPP的
-
运行文件:
- 确保你的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页面
这是由PHP输出的段落。
“;
?>
这是普通的HTML段落。
“`
保存文件,然后在浏览器中访问 localhost/hello.php
。你会看到一个带有标题和两个段落的网页,其中一个段落的内容是由PHP生成的。
这展示了PHP如何与HTML无缝集成,让你能够动态地控制网页的任何部分。
第四章:PHP基本语法、变量和数据类型
现在我们来学习PHP的一些核心基础知识。
1. PHP标签和执行
我们已经看到了 <?php ... ?>
标记。记住,只有在这对标记之间的代码才会被当作PHP执行,其他部分(比如标记外部的HTML)会被原样发送到浏览器。
还有一些其他的PHP标记风格,但 <?php ... ?>
是标准的推荐方式。
<?=
是一个快捷输出标记,等同于 <?php echo
。
“`php
使用快捷标签输出变量
Hello, = $name ?>!
“`
这比使用 <?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;
- String (字符串): 文本数据,用单引号
-
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 (资源): 表示外部资源(如数据库连接、文件句柄)。
- NULL: 表示一个变量没有值。
检查变量类型和值:
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”;)
“` -
比较运算符: 比较两个值,返回布尔值 (
true
或false
)。==
(等于 – 值相等)===
(全等 – 值和类型都相等)!=
或<>
(不等于 – 值不相等)!==
(不全等 – 值或类型不相等)>
(大于)<
(小于)>=
(大于等于)<=
(小于等于)
“`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请求体中发送(不可见)。
例子:一个简单的问候表单
-
创建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脚本中如何引用这个输入框的值。
-
创建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 特殊字符(如<
转换为<
)转换为它们的 HTML 实体,防止用户输入恶意代码(如<script>alert('hack')</script>
)在你的页面上执行,从而提高安全性。这是入门阶段你需要了解的最基本的安全防护之一。
现在访问 localhost/index.html
,在输入框输入你的名字,点击提交,就会跳转到 greet.php
页面,并看到个性化的问候语。
如果将表单的 method="post"
改为 method="get"
,然后在 greet.php
中使用 $_GET['username']
来获取数据,你会发现在提交表单后,名字会显示在浏览器地址栏中。
第九章:包含文件
在一个大型网站中,很多部分可能是重复的,比如页眉 (header)、页脚 (footer)、导航菜单、数据库连接配置等。每次都在每个页面中重复编写这些代码是非常低效和难以维护的。PHP提供了文件包含机制来解决这个问题。
你可以创建单独的文件来存放这些重复的代码,然后在需要的地方使用 include
或 require
语句将它们包含进来。
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
版本非常有用,可以防止重复包含文件(比如函数定义文件),避免函数重定义错误。
例子:包含页头和页脚
-
创建页头文件 (
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"> -
创建页脚文件 (
footer.php
):php
</div> <!-- 关闭 content div -->
<div class="footer">
<p>© <?php echo date("Y"); ?> 我的网站. All rights reserved.</p>
</div>
</body>
</html> -
创建使用包含文件的页面 (
about.php
):“`php
<?php
require_once ‘header.php’; // 包含页头,如果文件不存在会报错停止
?>关于我们
这是一个关于我们的页面。
我们可以把公共的部分放在单独的文件里,然后在不同的页面包含它们。
<?php
include ‘footer.php’; // 包含页脚,如果文件不存在会警告但继续
?>
``
htdocs
将这三个文件都保存到目录下。然后在浏览器中访问
localhost/about.php`。
你会看到一个完整的网页,页头和页脚的内容是通过包含 header.php
和 footer.php
文件生成的。这种方式极大地提高了代码的复用性。
第十章:接下来学什么?
恭喜你!你已经掌握了PHP的基础知识,包括环境搭建、基本语法、变量、数据类型、运算符、控制结构、函数以及文件包含和简单的表单处理。这为你进一步学习PHP和Web开发奠定了良好的基础。
但是,这仅仅是PHP世界的冰山一角。要成为一名熟练的PHP开发者,你还需要学习和实践更多内容:
- 面向对象编程 (OOP): PHP对OOP提供了强大的支持。学习类、对象、继承、封装、多态等概念,能够帮助你编写结构更清晰、更易于维护和扩展的代码。
- 更深入的数据库交互: 学习如何使用mysqli或PDO扩展与MySQL等数据库进行更复杂的操作(增、删、改、查),包括预处理语句(防止SQL注入等安全问题)。
- 会话 (Sessions) 和 Cookie: 学习如何使用会话跟踪用户状态(如登录),使用Cookie在用户的浏览器中存储少量信息。
- 文件处理: 学习如何读写文件、上传文件等。
- 错误处理和异常处理: 学习如何优雅地处理代码中的错误和异常。
- 安全性: 学习常见的Web安全威胁(如XSS, CSRF, SQL注入)及其防护方法。
- Composer: PHP的依赖管理工具,学习如何使用它来管理项目所需的第三方库。
- PHP框架: 学习使用流行的PHP框架,如Laravel, Symfony, CodeIgniter等。框架提供了一套约定俗成的开发规范和大量现成的组件,能够极大地提高开发效率和代码质量。这是现代PHP开发的主流方式。
- API开发: 学习如何使用PHP构建RESTful API。
- 版本控制: 学习使用Git进行代码版本管理。
- 前端技术: 虽然你是后端开发者,但了解HTML, CSS, JavaScript (特别是Ajax) 将帮助你更好地与前端协作或进行全栈开发。
实践是最好的老师:
学习编程最重要的是动手实践。尝试用你学到的知识去构建一些小项目:
- 一个简单的留言板。
- 一个用户注册和登录系统。
- 一个待办事项列表 (To-Do List)。
- 一个简单的新闻发布系统。
在实践中遇到问题,尝试自己查找资料解决,这将是宝贵的学习经验。
结论
恭喜你完成了这篇PHP零基础快速入门教程!从环境搭建到基本语法,你已经迈出了坚实的第一步。
PHP是一门强大且用途广泛的语言。掌握了基础后,继续深入学习,探索它的更多功能和现代开发实践。保持好奇心,不断练习,你一定能够成为一名优秀的PHP开发者!
祝你学习顺利,编程愉快!