PHP手机网站开发完整教程

手机网站开发的核心是 “响应式设计”,这意味着你的网站代码能够根据用户访问的设备(手机、平板、桌面电脑)自动调整布局和样式,以提供最佳浏览体验。

php手机网站开发教程
(图片来源网络,侵删)

我们将使用以下主流技术栈:

  • 后端: PHP
  • 前端: HTML5, CSS3, JavaScript
  • 响应式框架: Bootstrap (简化CSS开发)
  • 数据库: MySQL
  • Web服务器: Apache 或 Nginx

第一部分:准备工作

在开始编码之前,你需要搭建一个本地的开发环境。

安装集成开发环境

对于PHP开发,最简单的方式是安装一个集成开发环境,它会自动安装PHP、MySQL和Web服务器。

  • 强烈推荐: XAMPP (适用于 Windows, macOS, Linux) 或 MAMP (适用于 macOS),它们都是免费且易于安装的。

配置虚拟主机 (可选但推荐)

为了模拟真实的网站环境,我们为项目创建一个虚拟主机。

php手机网站开发教程
(图片来源网络,侵删)
  1. 在XAMPP的安装目录下,找到 htdocs 文件夹。

  2. htdocs 文件夹内创建一个新项目文件夹,mobile_site

  3. 编辑 httpd-vhosts.conf 文件 (通常在 xampp/apache/conf/extra/ 目录下)。

  4. 在文件末尾添加以下配置:

    php手机网站开发教程
    (图片来源网络,侵删)
    <VirtualHost *:80>
        DocumentRoot "C:/xampp/htdocs/mobile_site"  # 请根据你的实际路径修改
        ServerName mobile-site.local
        <Directory "C:/xampp/htdocs/mobile_site">
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>
  5. 编辑你的系统 hosts 文件 (Windows在 C:\Windows\System32\drivers\etc\hosts,macOS在 /etc/hosts),添加一行: 0.0.1 mobile-site.local

  6. 重启Apache服务器,你就可以在浏览器中通过 http://mobile-site.local 访问你的项目了。


第二部分:项目结构

一个清晰的目录结构有助于项目管理和维护,我们推荐以下结构:

mobile_site/
├── assets/                 # 存放静态资源
│   ├── css/               # CSS文件
│   │   └── style.css     # 主样式表
│   ├── js/                # JavaScript文件
│   │   └── script.js     # 主脚本文件
│   └── images/            # 图片资源
├── includes/              # 存放公共组件
│   ├── header.php        # 公共头部
│   ├── footer.php        # 公共底部
│   └── db.php            # 数据库连接配置
├── index.php             # 首页
├── about.php             # 关于我们页面
└── contact.php           # 联系我们页面

第三部分:核心技术与实现

响应式设计基础

响应式设计主要依赖三个核心技术:

a) 视口

在HTML的 <head> 标签中必须添加 viewport meta标签,它告诉浏览器如何控制页面的尺寸和缩放。

<meta name="viewport" content="width=device-width, initial-scale=1.0">
  • width=device-width: 使页宽度与设备的屏幕宽度匹配。
  • initial-scale=1.0: 初始缩放比例为1.0。

b) 媒体查询

媒体查询是CSS3的核心功能,它允许你根据设备的特定特征(如宽度、高度)应用不同的样式。

语法:

/* 当屏幕宽度小于等于768像素时(平板和手机) */
@media (max-width: 768px) {
    /* 在这里编写针对小屏幕的CSS */
    .main-nav {
        display: none; /* 隐藏主导航 */
    }
    .mobile-menu-btn {
        display: block; /* 显示移动端菜单按钮 */
    }
}
/* 当屏幕宽度大于768像素时(桌面) */
@media (min-width: 769px) {
    /* 在这里编写针对大屏幕的CSS */
    .main-nav {
        display: flex;
    }
    .mobile-menu-btn {
        display: none;
    }
}

c) 弹性布局

使用相对单位(如百分比 、vwvhemrem)代替固定像素(px),让元素能够根据容器大小自适应。

.container {
    width: 100%; /* 容器宽度占满父元素 */
    padding: 15px;
    box-sizing: border-box; /* 让padding和border包含在width内 */
}
.box {
    width: 50%; /* 两个盒子并排 */
    float: left;
}

使用Bootstrap简化开发

手动编写响应式CSS比较繁琐。Bootstrap 是一个流行的前端框架,它内置了强大的响应式网格系统和组件,能极大提高开发效率。

如何集成Bootstrap:

  1. 在你的 style.css 之前,引入Bootstrap的CSS文件(推荐使用CDN)。

    <!-- 在 <head> 中 -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
  2. Bootstrap的网格系统非常简单:

    • 容器: <div class="container"><div class="container-fluid">
    • 行: <div class="row">
    • 列: <div class="col">, <div class="col-md-6"> (在中等屏幕上占6列,即一半宽度)

    示例:

    <div class="container">
        <div class="row">
            <div class="col-md-8">
                <h1>主要内容</h1>
                <p>这里是文章内容...</p>
            </div>
            <div class="col-md-4">
                <h2>侧边栏</h2>
                <p>这里是侧边栏内容...</p>
            </div>
        </div>
    </div>

    这个布局在手机上会自动堆叠,在平板和桌面上则会并排显示。

PHP与HTML的整合

使用PHP的 includerequire 函数来复用公共代码。

示例 (index.php):

<?php
// 包含头部
include 'includes/header.php';
?>
    <div class="container">
        <h1>欢迎来到我的手机网站</h1>
        <p>这是一个响应式设计的网站。</p>
    </div>
<?php
// 包含底部
include 'includes/footer.php';
?>

示例 (includes/header.php):

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">我的手机网站</title>
    <!-- 引入Bootstrap -->
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
    <!-- 引入自定义样式 -->
    <link rel="stylesheet" href="assets/css/style.css">
</head>
<body>
    <header>
        <nav class="navbar navbar-expand-lg navbar-light bg-light">
            <div class="container-fluid">
                <a class="navbar-brand" href="index.php">Logo</a>
                <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
                    <span class="navbar-toggler-icon"></span>
                </button>
                <div class="collapse navbar-collapse" id="navbarNav">
                    <ul class="navbar-nav">
                        <li class="nav-item"><a class="nav-link" href="index.php">首页</a></li>
                        <li class="nav-item"><a class="nav-link" href="about.php">关于我们</a></li>
                        <li class="nav-item"><a class="nav-link" href="contact.php">联系我们</a></li>
                    </ul>
                </div>
            </div>
        </nav>
    </header>

注意:这里使用了Bootstrap的导航栏组件,它自带响应式折叠功能。

数据库操作

PHP常与MySQL数据库配合使用。

a) 数据库连接 (includes/db.php):

<?php
$servername = "localhost";
$username = "root"; // XAMPP默认用户名
$password = "";     // XAMPP默认密码
$dbname = "my_mobile_db"; // 你需要先创建这个数据库
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// 检查连接
if ($conn->connect_error) {
    die("连接失败: " . $conn->connect_error);
}
?>

b) 读取数据 (例如在首页显示文章列表):

<?php
include 'includes/header.php';
include 'includes/db.php';
// 查询数据库
$sql = "SELECT id, title, content, created_at FROM articles ORDER BY created_at DESC";
$result = $conn->query($sql);
?>
    <div class="container mt-4">
        <h1>最新文章</h1>
        <?php
        if ($result->num_rows > 0) {
            // 输出每条数据
            while($row = $result->fetch_assoc()) {
                echo '<div class="card mb-3">';
                echo '<div class="card-body">';
                echo '<h5 class="card-title">' . htmlspecialchars($row["title"]) . '</h5>';
                echo '<p class="card-text">' . substr(htmlspecialchars($row["content"]), 0, 150) . '...</p>';
                echo '<a href="article.php?id=' . $row["id"] . '" class="btn btn-primary">阅读更多</a>';
                echo '</div>';
                echo '</div>';
            }
        } else {
            echo "暂无文章";
        }
        $conn->close();
        ?>
    </div>
<?php
include 'includes/footer.php';
?>
  • htmlspecialchars(): 用于防止XSS攻击,将特殊字符转换为HTML实体。
  • substr(): 截取字符串,用于显示文章摘要。

第四部分:高级主题与优化

检测移动设备

虽然响应式设计是首选,但有时你可能需要为移动设备提供完全不同的内容,你可以使用PHP的 $_SERVER['HTTP_USER_AGENT'] 来检测设备。

function isMobile() {
    // 如果有HTTP_X_WAP_PROFILE头,则一定是移动设备
    if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) {
        return true;
    }
    // 如果通过HTTP_VIA判断,是移动设备
    if (isset($_SERVER['HTTP_VIA'])) {
        return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
    }
    // 脑残法判断手机浏览器
    if (strpos($_SERVER['HTTP_ACCEPT'], "vnd.wap.wml") !== false) {
        return true;
    }
    // 脑残法判断手机浏览器
    if (strpos($_SERVER['HTTP_USER_AGENT'], "Mobile") !== false || strpos($_SERVER['HTTP_USER_AGENT'], "Android") !== false || strpos($_SERVER['HTTP_USER_AGENT'], "iPhone") !== false || strpos($_SERVER['HTTP_USER_AGENT'], "iPad") !== false || strpos($_SERVER['HTTP_USER_AGENT'], "iPod") !== false) {
        return true;
    }
    return false;
}
if (isMobile()) {
    // 加载移动端专用页面或内容
    // include 'mobile_home.php';
} else {
    // 加载桌面端页面
    // include 'desktop_home.php';
}

注意: 现代开发中,这种方法已不常用,优先推荐响应式设计。

性能优化

  • 压缩CSS和JS: 使用工具(如 Gulp, Webpack)或在线服务压缩你的代码。
  • 图片优化: 使用现代图片格式(如WebP),并针对不同尺寸的设备提供不同大小的图片(<picture>标签或srcset属性)。
  • 缓存: 启用浏览器缓存和服务器缓存(如OPcache),减少服务器负载和页面加载时间。

第五部分:部署

当你完成开发并测试后,就可以将网站部署到线上服务器了。

  1. 购买域名和虚拟主机: 选择一个可靠的虚拟主机提供商(如阿里云、腾讯云、Bluehost等),确保支持PHP和MySQL。
  2. 上传文件: 使用FTP(如FileZilla)或虚拟主机提供的控制面板,将你本地的 mobile_site 文件夹中的所有内容上传到服务器的Web根目录(通常是 public_htmlwww)。
  3. 导入数据库: 在本地phpMyAdmin中导出你的数据库(.sql文件),然后在虚拟主机提供的数据库管理工具中导入。
  4. 修改数据库配置: 将 includes/db.php 中的数据库连接信息修改为线上服务器的信息(主机名、用户名、密码、数据库名)。
  5. 域名解析: 在你的域名提供商后台,将域名解析到你的服务器IP地址。
  6. 测试: 通过你的域名访问网站,确保一切正常运行。

总结与资源

这份教程为你提供了一个从零开始构建PHP响应式手机网站的完整路径,关键在于掌握 响应式设计原理,善用 Bootstrap 等框架提高效率,并理解 PHP与数据库 的基本交互。

推荐学习资源:

祝你开发顺利!