PHP是全球最流行的服务器端编程语言之一,全球超过75%的网站使用PHP开发,包括WordPress、Facebook等知名项目。PHP语法简单、学习曲线平缓,是后端开发入门的最佳选择之一。

一、PHP环境搭建

本地开发环境推荐

安装完成后,在浏览器访问 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' => '接口不存在']); } ?>

七、学习路线建议

  1. 基础阶段:掌握语法、数组、字符串、函数等基础知识
  2. 进阶阶段:学习面向对象、PDO数据库操作、Session管理
  3. 框架阶段:学习Laravel或ThinkPHP等主流框架
  4. 实战阶段:完成至少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% 的安全问题。