LAMP (Linux, Apache, MySQL, PHP) 是一个流行的开源Web开发平台组合,非常适合构建动态网站。以下是实现动态网页的详细步骤:
# Ubuntu/Debian
sudo apt update
sudo apt install apache2 mysql-server php libapache2-mod-php php-mysql
# CentOS/RHEL
sudo yum install httpd mariadb-server php php-mysqlnd
sudo systemctl start httpd mariadb
sudo systemctl enable httpd mariadb
# 确保Apache正在运行
sudo systemctl status apache2 # 或 httpd
# 测试Apache - 访问 http://your_server_ip 应看到Apache默认页
sudo mysql_secure_installation # 设置root密码和安全选项
创建测试文件 /var/www/html/info.php
:
<?php phpinfo(); ?>
访问 http://your_server_ip/info.php
应看到PHP信息页面
mysql -u root -p
CREATE DATABASE mywebsite;
USE mywebsite;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
exit
<?php
$host = 'localhost';
$dbname = 'mywebsite';
$username = 'root';
$password = 'your_password';
try {
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
?>
<?php include 'db_connect.php'; ?>
<!DOCTYPE html>
<html>
<head>
<title>用户注册</title>
</head>
<body>
<h2>注册新用户</h2>
<form method="post" action="process_register.php">
用户名: <input type="text" name="username" required><br>
邮箱: <input type="email" name="email" required><br>
密码: <input type="password" name="password" required><br>
<input type="submit" value="注册">
</form>
</body>
</html>
<?php
include 'db_connect.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['username'];
$email = $_POST['email'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
try {
$stmt = $conn->prepare("INSERT INTO users (username, email) VALUES (:username, :email)");
$stmt->bindParam(':username', $username);
$stmt->bindParam(':email', $email);
$stmt->execute();
echo "注册成功! <a href='login.php'>登录</a>";
} catch(PDOException $e) {
echo "错误: " . $e->getMessage();
}
}
?>
<?php
session_start();
include 'db_connect.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$username = $_POST['username'];
$password = $_POST['password'];
$stmt = $conn->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(':username', $username);
$stmt->execute();
if ($user = $stmt->fetch()) {
if (password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
$_SESSION['username'] = $user['username'];
header("Location: dashboard.php");
exit();
} else {
$error = "密码错误";
}
} else {
$error = "用户名不存在";
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>用户登录</title>
</head>
<body>
<h2>登录</h2>
<?php if (isset($error)) echo "<p style='color:red'>$error</p>"; ?>
<form method="post" action="login.php">
用户名: <input type="text" name="username" required><br>
密码: <input type="password" name="password" required><br>
<input type="submit" value="登录">
</form>
<p>没有账号? <a href="register.php">注册</a></p>
</body>
</html>
<?php
session_start();
if (!isset($_SESSION['user_id'])) {
header("Location: login.php");
exit();
}
include 'db_connect.php';
$user_id = $_SESSION['user_id'];
$stmt = $conn->prepare("SELECT * FROM users WHERE id = :user_id");
$stmt->bindParam(':user_id', $user_id);
$stmt->execute();
$user = $stmt->fetch();
?>
<!DOCTYPE html>
<html>
<head>
<title>用户仪表盘</title>
</head>
<body>
<h2>欢迎, <?php echo htmlspecialchars($user['username']); ?></h2>
<p>邮箱: <?php echo htmlspecialchars($user['email']); ?></p>
<p>注册日期: <?php echo $user['created_at']; ?></p>
<a href="logout.php">退出</a>
</body>
</html>
password_hash()
和 password_verify()
htmlspecialchars()
输出用户数据通过以上步骤,您可以建立一个功能完善的动态网站。根据项目需求,您可以扩展更多功能模块。