PHP是全球最流行的服务器端编程语言之一,全球超过75%的网站使用PHP开发,包括WordPress、Facebook等知名项目。PHP语法简单、学习曲线平缓,是后端开发入门的最佳选择之一。
一、PHP环境搭建
本地开发环境推荐
- XAMPP:集成Apache + MySQL + PHP,适合Windows用户
- MAMP:Mac用户的最佳选择
- PHPStudy:国产小皮面板,中文界面,操作简单
安装完成后,在浏览器访问 http://localhost 看到欢迎页面即表示环境搭建成功。
二、基础语法
变量与数据类型
<?php
// 变量以$开头
$name = "会说源码网";
$age = 5;
$price = 19.99;
$is_active = true;
// 数组
$skills = ["PHP", "MySQL", "JavaScript", "Linux"];
// 关联数组
$user = [
"name" => "张三",
"age" => 25,
"email" => "zhangsan@example.com"
];
echo "姓名:{$user['name']},年龄:{$user['age']}";
?>
字符串处理
<?php
$str = "Hello, PHP!";
// 常用字符串函数
echo strlen($str); // 长度:11
echo strpos($str, "PHP"); // 查找位置:7
echo substr($str, 0, 5); // 截取:Hello
echo str_replace("PHP", "World", $str); // 替换
echo strtolower($str); // 转小写
echo trim($str); // 去除首尾空白
// 字符串拼接
$first = "会说";
$second = "源码网";
$full = $first . $second; // 使用 . 运算符拼接
echo $full; // 会说源码网
?>
三、函数与面向对象
自定义函数
<?php
function calculateDiscount($price, $discount = 0.1) {
$finalPrice = $price * (1 - $discount);
return round($finalPrice, 2);
}
echo calculateDiscount(100); // 90
echo calculateDiscount(100, 0.2); // 80
// 匿名函数(闭包)
$greet = function($name) {
return "你好,{$name}!";
};
echo $greet("小明");
?>
面向对象编程
<?php
class User {
private string $name;
private int $age;
public function __construct(string $name, int $age) {
$this->name = $name;
$this->age = $age;
}
public function getInfo(): string {
return "姓名:{$this->name},年龄:{$this->age}";
}
public function isAdult(): bool {
return $this->age >= 18;
}
}
$user = new User("张三", 25);
echo $user->getInfo(); // 姓名:张三,年龄:25
?>
四、数据库操作(PDO)
<?php
// 连接数据库
$pdo = new PDO(
'mysql:host=localhost;dbname=test;charset=utf8mb4',
'root',
'password',
[PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]
);
// 查询数据(预处理语句,防止SQL注入)
$stmt = $pdo->prepare("SELECT * FROM users WHERE age > :age");
$stmt->execute(['age' => 18]);
$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($users as $user) {
echo $user['name'] . " - " . $user['email'] . "<br>";
}
// 插入数据
$stmt = $pdo->prepare("INSERT INTO users (name, email, age) VALUES (?, ?, ?)");
$stmt->execute(["李四", "lisi@example.com", 22]);
$lastId = $pdo->lastInsertId();
// 更新数据
$stmt = $pdo->prepare("UPDATE users SET age = ? WHERE id = ?");
$stmt->execute([26, 1]);
echo "影响行数:" . $stmt->rowCount();
?>
重要提示:永远使用PDO预处理语句来操作数据库,直接拼接SQL字符串会导致SQL注入漏洞,这是最常见的安全漏洞之一。
五、文件处理
<?php
// 读取文件
$content = file_get_contents('data.txt');
// 写入文件
file_put_contents('output.txt', 'Hello, World!');
// 逐行读取大文件
$handle = fopen('large-file.log', 'r');
while (($line = fgets($handle)) !== false) {
echo trim($line) . "<br>";
}
fclose($handle);
// 文件上传处理
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$file = $_FILES['upload'];
$allowed = ['jpg', 'jpeg', 'png', 'pdf'];
$ext = strtolower(pathinfo($file['name'], PATHINFO_EXTENSION));
if (in_array($ext, $allowed) && $file['size'] < 5 * 1024 * 1024) {
move_uploaded_file($file['tmp_name'], 'uploads/' . $file['name']);
echo "上传成功";
}
}
?>
六、实战:简单API接口
<?php
header('Content-Type: application/json; charset=utf-8');
header('Access-Control-Allow-Origin: *');
$method = $_SERVER['REQUEST_METHOD'];
$action = $_GET['action'] ?? '';
switch ($action) {
case 'list':
// 获取用户列表
echo json_encode([
'code' => 200,
'data' => [
['id' => 1, 'name' => '张三'],
['id' => 2, 'name' => '李四']
]
]);
break;
case 'detail':
$id = (int)($_GET['id'] ?? 0);
echo json_encode([
'code' => 200,
'data' => ['id' => $id, 'name' => '张三', 'email' => 'test@example.com']
]);
break;
default:
http_response_code(404);
echo json_encode(['code' => 404, 'message' => '接口不存在']);
}
?>
七、学习路线建议
- 基础阶段:掌握语法、数组、字符串、函数等基础知识
- 进阶阶段:学习面向对象、PDO数据库操作、Session管理
- 框架阶段:学习Laravel或ThinkPHP等主流框架
- 实战阶段:完成至少2个完整项目(如博客系统、电商网站)
八、Session与Cookie
<?php
// 开启Session(必须在输出之前调用)
session_start();
// 设置Session
$_SESSION['user_id'] = 123;
$_SESSION['username'] = '小明';
$_SESSION['login_time'] = time();
// 读取Session
if (isset($_SESSION['user_id'])) {
echo "欢迎回来," . $_SESSION['username'];
} else {
echo "请先登录";
}
// 设置Cookie(有效期24小时)
setcookie('theme', 'dark', time() + 86400, '/');
// 读取Cookie
$theme = $_COOKIE['theme'] ?? 'light';
// 登出:清除Session
session_destroy();
header('Location: /login.php');
?>
九、安全防护要点
<?php
// 1. XSS防护:输出时转义
$userInput = '<script>alert("xss")</script>';
echo htmlspecialchars($userInput, ENT_QUOTES, 'UTF-8');
// 2. SQL注入防护:用预处理语句
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$_GET['id']]);
$user = $stmt->fetch();
// 3. CSRF防护:生成并验证Token
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
// 表单中: <input type="hidden" name="csrf_token" value="...">
// 验证: if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) die('CSRF攻击');
// 4. 密码加密
$hash = password_hash($password, PASSWORD_DEFAULT); // 加密
$valid = password_verify($inputPassword, $hash); // 验证
?>
总结:PHP入门容易,但写出安全的代码需要经验。新手牢记三点:输出要转义、查询要预处理、密码要加密。掌握这三条,能避免 80% 的安全问题。