php与动态网站建设 第1篇
安装 PHP
首先您需要在本地机器上安装 PHP 环境。推荐使用集成开发环境(IDE),如 XAMPP、WAMP 或 MAMP,它们包含了 PHP、Apache 服务器和 MySQL 数据库。
下载并安装 XAMPP(适用于 Windows 和 macOS)或 WAMP/MAMP(适用于特定操作系统)。
启动 Apache 和 MySQL 服务器。
配置 PHP
确保 PHP 已经正确配置并且可以运行。打开命令行工具,输入 php -v,检查是否输出 PHP 版本信息。
安装 IDE
选择一个适合您的集成开发环境(IDE),如 PhpStorm、Visual Studio Code 或 Sublime Text,并安装必要的插件和扩展。
2. PHP 基础
PHP 语法
熟悉 PHP 的基本语法,包括变量、条件语句、循环、函数等。
1
2 $name = _John Doe_; // 字符串变量
3 echo _Hello, _ . $name . _!_; // 输出字符串
4?>
使用表单
学会如何处理 HTML 表单数据,并通过 POST 或 GET 方法传递给 PHP 脚本。
1
3
1//
2$name = $_POST['name'];
3echo _Hello, _ . htmlspecialchars($name) . _!_;
连接数据库
学习如何使用 PDO 或 MySQLi 扩展连接 MySQL 数据库,并执行 SQL 语句。
1
2 try {
3 $pdo = new PDO(_mysql:host=localhost;dbname=test_, _username_, _password_);
4 $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
6 $stmt = $pdo->prepare(_SELECT * FROM users WHERE id = :id_);
7 $stmt->execute(['id' => 1]);
8 $user = $stmt->fetch(PDO::FETCH_ASSOC);
9 print_r($user);
10 } catch (PDOException $e) {
11 echo _Connection failed: _ . $e->getMessage();
12 }
13?>
3. 构建动态网站
设计数据库
设计数据库结构,并创建必要的表。
1CREATE DATABASE myapp;
2USE myapp;
4CREATE TABLE users (
5 id INT(11) AUTO_INCREMENT PRIMARY KEY,
6 username VARCHAR(50) NOT NULL UNIQUE,
7 password VARCHAR(255) NOT NULL,
8 created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
9);
用户注册与登录
实现用户注册和登录功能,并使用会话管理保存用户状态。
注册页面 ()
1
2if ($_SERVER[_REQUEST_METHOD_] == _POST_) {
3 require '';
5 $username = $_POST['username'];
6 $password = password_hash($_POST['password'], PASSWORD_DEFAULT);
8 $stmt = $pdo->prepare(_INSERT INTO users (username, password) VALUES (:username, :password)_);
9 $stmt->execute(['username' => $username, 'password' => $password]);
11 header(_Location: _);
12 exit();
13}
14?>
17
18
19
20
21
登录页面 ()
1
2session_start();
4if ($_SERVER[_REQUEST_METHOD_] == _POST_) {
5 require '';
7 $username = $_POST['username'];
8 $password = $_POST['password'];
10 $stmt = $pdo->prepare(_SELECT * FROM users WHERE username = :username_);
11 $stmt->execute(['username' => $username]);
12 $user = $stmt->fetch(PDO::FETCH_ASSOC);
14 if ($user && password_verify($password, $user['password'])) {
15 $_SESSION['user_id'] = $user['id'];
16 header(_Location: _);
17 exit();
18 } else {
19 $error = _Invalid username or password._;
20 }
21}
22?>
25
26
27
28
29
仪表盘 ()
1
2session_start();
4if (!isset($_SESSION['user_id'])) {
5 header(_Location: _);
6 exit();
9require '';
11$stmt = $pdo->prepare(_SELECT * FROM users WHERE id = :id_);
12$stmt->execute(['id' => $_SESSION['user_id']]);
13$user = $stmt->fetch(PDO::FETCH_ASSOC);
14?>
注销 ()
php深色版本1
2session_start();
3session_unset();
4session_destroy();
5header(_Location: _);
6exit();
7?>
4. 进阶功能
实现数据分页功能,让用户可以浏览大量数据。
1//
2$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
3$limit = 10;
4$offset = ($page - 1) * $limit;
6$stmt = $pdo->prepare(_SELECT * FROM users LIMIT :offset, :limit_);
7$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
8$stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
9$stmt->execute();
10$users = $stmt->fetchAll(PDO::FETCH_ASSOC);
12// 显示分页链接
13$total_pages = ceil($total_users / $limit);
14for ($i = 1; $i <= $total_pages; $i++) {
15 echo _$i_;
16}
文件上传
实现文件上传功能,并保存到服务器。
1
2if ($_SERVER[_REQUEST_METHOD_] == _POST_) {
3 $target_dir = _uploads/_;
4 $target_file = $target_dir . basename($_FILES[_fileToUpload_][_name_]);
5 $uploadOk = 1;
6 $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
8 // Check if image file is a actual image or fake image
9 if (isset($_POST[_submit_])) {
10 $check = getimagesize($_FILES[_fileToUpload_][_tmp_name_]);
11 if ($check !== false) {
12 echo _File is an image - _ . $check[_mime_] . _._;
13 $uploadOk = 1;
14 } else {
15 echo _File is not an image._;
16 $uploadOk = 0;
17 }
18 }
20 // Check if file already exists
21 if (file_exists($target_file)) {
22 echo _Sorry, file already exists._;
23 $uploadOk = 0;
24 }
26 // Check file size
27 if ($_FILES[_fileToUpload_][_size_] > 500000) {
28 echo _Sorry, your file is too large._;
29 $uploadOk = 0;
30 }
32 // Allow certain file formats
33 if ($imageFileType != _jpg_ && $imageFileType != _png_ && $imageFileType != _jpeg_
34 && $imageFileType != _gif_) {
35 echo _Sorry, only JPG, JPEG, PNG & GIF files are allowed._;
36 $uploadOk = 0;
37 }
39 // Check if $uploadOk is set to 0 by an error
40 if ($uploadOk == 0) {
41 echo _Sorry, your file was not uploaded._;
42 // if everything is ok, try to upload file
43 } else {
44 if (move_uploaded_file($_FILES[_fileToUpload_][_tmp_name_], $target_file)) {
45 echo _The file _ . htmlspecialchars(basename($_FILES[_fileToUpload_][_name_])) . _ has been uploaded._;
46 } else {
47 echo _Sorry, there was an error uploading your file._;
48 }
49 }
50}
51?>
54 Select image to upload:
55
56
5. 安全性
输入验证
始终对用户输入进行验证,避免 SQL 注入和其他安全风险。
1$username = filter_var($_POST['username'], FILTER_SANITIZE_STRING);
2$password = filter_var($_POST['password'], FILTER_SANITIZE_STRING);
密码哈希
使用 password_hash() 和 password_verify() 函数来安全地存储和验证密码。
php深色版本1$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
CSRF 保护
实现跨站请求伪造(CSRF)保护,确保表单提交的安全性。
1session_start();
3// 生成一个随机令牌
4$_SESSION['token'] = bin2hex(random_bytes(32));
6// 表单中包含令牌字段
9
10
13// 中验证令牌
14if ($_POST['csrf_token'] === $_SESSION['token']) {
15 // 处理表单提交
16} else {
17 // CSRF 令牌不匹配,拒绝请求
18}
通过学习了如何使用 PHP 构建动态网站和 Web 应用程序。从环境搭建到基础语法,再到具体功能的实现,我们一步步构建了一个完整的应用。
php与动态网站建设 第2篇
用于显示内容页
实现对内容数据的获取,执行数据的查询操作
用于连接数据库
添加内容的界面实现过程
在验证用户为登录状态后,执行数据的插入工作
在验证完用户为登录状态后,执行修改数据库的相关操作
用于实现删除内容的操作,通过get值准确定位到要执行操作的数据
用于实现展示详细内容的功能
执行的操作有连接数据库,查询数据,对传参进行判断。
用于判断用户是否登录,若未登录则跳转登录界面,提升网站安全性
依靠关闭session来实现退出登录的功能。
php与动态网站建设 第3篇
在 HTML 中嵌入 PHP 代码以启用服务器端处理。PHP 代码包含在 <?php ... ?>标签。
CSS样式:
使用 CSS 设置网页元素的样式。链接外部 CSS 文件或直接在 HTML 文件中包含样式。
JavaScript 集成:
包括 JavaScript 以实现客户端交互。链接外部 JavaScript 文件或在 HTML 中嵌入脚本。