从零开始:PHP基础教程系列-第13篇:构建简单的Web应用

113 阅读2分钟

从零开始:PHP基础教程系列

第13篇:构建简单的Web应用

在本篇文章中,我们将学习如何使用PHP构建一个简单的Web应用。这个应用将实现用户注册和登录功能,并使用PDO与MySQL数据库进行交互。我们将逐步实现这个应用的基本功能。

一、项目结构

首先,我们需要创建一个基本的项目结构:

/simple-web-app
    ├── index.php
    ├── register.php
    ├── login.php
    ├── dashboard.php
    ├── db.php
    └── style.css

二、数据库设置

在开始之前,我们需要设置数据库。以下是创建数据库和用户表的SQL语句:

CREATE DATABASE simple_web_app;

USE simple_web_app;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL
);

三、数据库连接

db.php 文件中,我们将设置数据库连接:

<?php
$dsn = 'mysql:host=localhost;dbname=simple_web_app;charset=utf8';
$username = 'your_username';
$password = 'your_password';

try {
    $pdo = new PDO($dsn, $username, $password);
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
    die("连接失败: " . $e->getMessage());
}
?>

四、用户注册功能

register.php 文件中,我们将实现用户注册功能:

<?php
require 'db.php';

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = $_POST['username'];
    $password = password_hash($_POST['password'], PASSWORD_DEFAULT);

    $sql = "INSERT INTO users (username, password) VALUES (:username, :password)";
    $stmt = $pdo->prepare($sql);

    try {
        $stmt->bindParam(':username', $username);
        $stmt->bindParam(':password', $password);
        $stmt->execute();
        echo "注册成功!";
    } catch (PDOException $e) {
        echo "注册失败: " . $e->getMessage();
    }
}
?>

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>用户注册</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <h1>用户注册</h1>
    <form method="POST" action="">
        <input type="text" name="username" placeholder="用户名" required>
        <input type="password" name="password" placeholder="密码" required>
        <button type="submit">注册</button>
    </form>
</body>
</html>

五、用户登录功能

login.php 文件中,我们将实现用户登录功能:

<?php
require 'db.php';
session_start();

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];

    $sql = "SELECT * FROM users WHERE username = :username";
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':username', $username);
    $stmt->execute();
    $user = $stmt->fetch(PDO::FETCH_ASSOC);

    if ($user && password_verify($password, $user['password'])) {
        $_SESSION['user_id'] = $user['id'];
        header("Location: dashboard.php");
        exit();
    } else {
        echo "用户名或密码错误";
    }
}
?>

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>用户登录</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <h1>用户登录</h1>
    <form method="POST" action="">
        <input type="text" name="username" placeholder="用户名" required>
        <input type="password" name="password" placeholder="密码" required>
        <button type="submit">登录</button>
    </form>
</body>
</html>

六、用户仪表盘

dashboard.php 文件中,我们将显示用户登录后的欢迎信息:

<?php
session_start();
if (!isset($_SESSION['user_id'])) {
    header("Location: login.php");
    exit();
}

require 'db.php';

$sql = "SELECT username FROM users WHERE id = :id";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':id', $_SESSION['user_id']);
$stmt->execute();
$user = $stmt->fetch(PDO::FETCH_ASSOC);
?>

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <title>用户仪表盘</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <h1>欢迎, <?php echo htmlspecialchars($user['username']); ?>!</h1>
    <a href="logout.php">登出</a>
</body>
</html>

七、登出功能

logout.php 文件中,我们将实现登出功能:

<?php
session_start();
session_destroy();
header("Location: login.php");
exit();
?>

八、样式文件

style.css 文件中,我们可以添加一些简单的样式:

body {
    font-family: Arial, sans-serif;
    margin: 0;
    padding: 20px;
    background-color: #f4f4f4;
}

h1 {
    color: #333;
}

form {
    margin: 20px 0;
}

input {
    display: block;
    margin: 10px 0;
    padding: 10px;
    width: 200px;
}

button {
    padding: 10px 15px;
    background-color: #5cb85c;
    color: white;
    border: none;
    cursor: pointer;
}

button:hover {
    background-color: #4cae4c;
}

九、小结

在本篇文章中,我们学习了如何构建一个简单的Web应用,包括用户注册、登录、登出和仪表盘功能。通过使用PDO与MySQL数据库进行交互,我们实现了基本的用户管理功能。

在下一篇文章中,我们将探讨更高级的主题,如使用框架和API开发。继续保持学习的热情,迈向更高的PHP编程水平! 原创发布,转载请注明出处!