web实验后端php测试文本

实验环境要求

  • 操作系统:Windows 7/8/10/11
  • 服务器套装:WAMP 2.5 (包含 Apache 2.4 + PHP 5.5 + MySQL)
  • 开发工具:任意文本编辑器(推荐 VS Code)
  • 浏览器:Chrome/Firefox(带开发者工具)

实验一:WAMP服务器安装与基础配置

实验目标

掌握WAMP服务器的安装、启动和基础配置

实验内容

  1. WAMP安装

    • 下载WAMP 2.5安装包
    • 完成安装过程,选择安装目录为 C:\wamp
    • 验证安装:启动WAMP,系统托盘图标变为绿色
  2. 目录结构熟悉

    • 网站根目录:C:\wamp\www\
    • Apache配置目录:C:\wamp\bin\apache\apache2.4.9\conf\
    • PHP配置目录:C:\wamp\bin\php\php5.5.12\
  3. 基础测试

    • 创建测试文件 C:\wamp\www\test.php
    php 复制代码
    <?php
    echo "Hello, WAMP Server!";
    phpinfo();
    ?>
    • 访问 http://localhost/test.php 验证PHP运行

验证标准

  • WAMP服务正常启动(绿色图标)

  • 能够通过浏览器访问测试页面

  • PHP信息页面正常显示


实验二:HTTP协议报文分析

实验目标

理解HTTP请求和响应报文结构

实验内容

  1. 使用Telnet手动发送HTTP请求

    bash 复制代码
    telnet localhost 80
    GET /test.php HTTP/1.1
    Host: localhost

    观察服务器响应

  2. 创建HTTP报文分析工具

    • 创建 http_analyzer.php
    php 复制代码
    <?php
    // 显示所有HTTP请求头
    echo "<h2>HTTP Request Headers:</h2>";
    foreach(getallheaders() as $name => $value) {
        echo "$name: $value<br>";
    }
    
    // 显示服务器信息
    echo "<h2>Server Information:</h2>";
    echo "Request Method: " . $_SERVER['REQUEST_METHOD'] . "<br>";
    echo "Query String: " . $_SERVER['QUERY_STRING'] . "<br>";
    echo "User Agent: " . $_SERVER['HTTP_USER_AGENT'] . "<br>";
    
    // 显示POST数据(如果有)
    if($_POST) {
        echo "<h2>POST Data:</h2>";
        print_r($_POST);
    }
    ?>
  3. HTTP方法测试

    • 创建 http_methods.html
    html 复制代码
    <!DOCTYPE html>
    <html>
    <head>
        <title>HTTP Methods Test</title>
    </head>
    <body>
        <h2>GET Method Test</h2>
        <form action="http_analyzer.php" method="get">
            Name: <input type="text" name="name"><br>
            Email: <input type="text" name="email"><br>
            <input type="submit" value="GET Submit">
        </form>
        
        <h2>POST Method Test</h2>
        <form action="http_analyzer.php" method="post">
            Name: <input type="text" name="name"><br>
            Email: <input type="text" name="email"><br>
            <input type="submit" value="POST Submit">
        </form>
    </body>
    </html>

验证标准

  • 能够通过Telnet手动发送HTTP请求

  • HTTP分析工具能正确显示请求头信息

  • GET和POST方法测试正常

    在server information可以看到填写的name 和 Email


实验三:Cookie的实现与使用

实验目标

掌握Cookie的设置、读取、删除操作

实验内容

  1. 基础Cookie操作

    • 创建 cookie_demo.php
    php 复制代码
    <?php
    // 设置Cookie
    $cookie_name = "user";
    $cookie_value = "John Doe";
    setcookie($cookie_name, $cookie_value, time() + (86400 * 30), "/"); // 30天
    
    // 检查Cookie是否设置
    if(!isset($_COOKIE[$cookie_name])) {
        echo "Cookie '" . $cookie_name . "' 尚未设置!";
    } else {
        echo "Cookie '" . $cookie_name . "' 已设置!<br>";
        echo "值为: " . $_COOKIE[$cookie_name];
    }
    ?>
  2. Cookie计数器

    • 创建 cookie_counter.php
    php 复制代码
    <?php
    $visit_count = 1;
    
    // 检查是否已有访问计数
    if(isset($_COOKIE['visit_count'])) {
        $visit_count = $_COOKIE['visit_count'] + 1;
    }
    
    // 设置Cookie,有效期1小时
    setcookie('visit_count', $visit_count, time() + 3600);
    
    echo "<h2>欢迎访问!</h2>";
    echo "这是您第 " . $visit_count . " 次访问本页面";
    
    // 提供重置功能
    echo '<br><a href="?reset=1">重置计数器</a>';
    
    if(isset($_GET['reset'])) {
        setcookie('visit_count', '', time() - 3600); // 删除Cookie
        header("Location: cookie_counter.php"); // 重定向
    }
    ?>
  3. 登录状态模拟

    • 创建 cookie_login.php
    php 复制代码
    <?php
    // 模拟登录处理
    if(isset($_POST['login'])) {
        $username = $_POST['username'];
        $password = $_POST['password'];
        
        // 简单验证(实际应用中需要数据库验证)
        if($username === 'admin' && $password === '123456') {
            // 设置登录Cookie,有效期30分钟
            setcookie('user_login', $username, time() + 1800);
            setcookie('login_time', date('Y-m-d H:i:s'), time() + 1800);
            echo "登录成功!";
        } else {
            echo "用户名或密码错误!";
        }
    }
    
    // 检查登录状态
    if(isset($_COOKIE['user_login'])) {
        echo "<h2>欢迎回来, " . $_COOKIE['user_login'] . "!</h2>";
        echo "登录时间: " . $_COOKIE['login_time'];
        echo '<br><a href="?logout=1">退出登录</a>';
    } else {
        // 显示登录表单
        echo '
        <h2>用户登录</h2>
        <form method="post">
            用户名: <input type="text" name="username"><br>
            密码: <input type="password" name="password"><br>
            <input type="submit" name="login" value="登录">
        </form>
        <p>提示: 用户名: admin, 密码: 123456</p>
        ';
    }
    
    // 退出处理
    if(isset($_GET['logout'])) {
        setcookie('user_login', '', time() - 3600);
        setcookie('login_time', '', time() - 3600);
        header("Location: cookie_login.php");
    }
    ?>

验证标准

  • Cookie设置、读取、删除功能正常
  • 访问计数器正确工作


  • 登录状态能够正确维持和清除


实验四:Session的实现与使用

实验目标

掌握Session的启动、数据存储和销毁

实验内容

  1. 基础Session操作

    • 创建 session_basic.php
    php 复制代码
    <?php
    session_start();
    
    // 设置Session变量
    $_SESSION['username'] = 'Alice';
    $_SESSION['email'] = 'alice@example.com';
    $_SESSION['login_time'] = date('Y-m-d H:i:s');
    
    echo "<h2>Session信息已设置</h2>";
    echo "Session ID: " . session_id() . "<br>";
    echo "Session Name: " . session_name() . "<br>";
    
    // 显示所有Session变量
    echo "<h3>当前Session数据:</h3>";
    foreach($_SESSION as $key => $value) {
        echo $key . " = " . $value . "<br>";
    }
    
    echo '<br><a href="session_show.php">查看Session数据</a>';
    ?>
  2. Session数据展示

    • 创建 session_show.php
    php 复制代码
    <?php
    session_start();
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <title>Session数据展示</title>
    </head>
    <body>
        <h2>当前Session数据</h2>
        <?php
        if(empty($_SESSION)) {
            echo "没有Session数据";
        } else {
            echo "<table border='1'>";
            echo "<tr><th>键</th><th>值</th></tr>";
            foreach($_SESSION as $key => $value) {
                echo "<tr><td>$key</td><td>$value</td></tr>";
            }
            echo "</table>";
        }
        ?>
        <br>
        <a href="session_basic.php">设置Session</a> | 
        <a href="session_destroy.php">销毁Session</a>
    </body>
    </html>
  3. Session购物车模拟

    • 创建 session_cart.php
    php 复制代码
    <?php
    session_start();
    
    // 初始化购物车
    if(!isset($_SESSION['cart'])) {
        $_SESSION['cart'] = array();
    }
    
    // 添加商品到购物车
    if(isset($_POST['add_item'])) {
        $item = $_POST['item'];
        $quantity = $_POST['quantity'];
        
        if(isset($_SESSION['cart'][$item])) {
            $_SESSION['cart'][$item] += $quantity;
        } else {
            $_SESSION['cart'][$item] = $quantity;
        }
    }
    
    // 清空购物车
    if(isset($_GET['clear'])) {
        $_SESSION['cart'] = array();
    }
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <title>购物车演示</title>
    </head>
    <body>
        <h2>购物车系统</h2>
        
        <h3>添加商品</h3>
        <form method="post">
            商品: <input type="text" name="item" required>
            数量: <input type="number" name="quantity" value="1" min="1">
            <input type="submit" name="add_item" value="添加到购物车">
        </form>
        
        <h3>购物车内容</h3>
        <?php if(empty($_SESSION['cart'])): ?>
            <p>购物车为空</p>
        <?php else: ?>
            <ul>
            <?php foreach($_SESSION['cart'] as $item => $quantity): ?>
                <li><?php echo $item . ' - 数量: ' . $quantity; ?></li>
            <?php endforeach; ?>
            </ul>
            <a href="?clear=1">清空购物车</a>
        <?php endif; ?>
        
        <p><a href="session_show.php">查看Session详情</a></p>
    </body>
    </html>
  4. Session销毁

    • 创建 session_destroy.php
    php 复制代码
    <?php
    session_start();
    
    // 显示销毁前的Session数据
    echo "<h2>销毁前的Session数据:</h2>";
    print_r($_SESSION);
    
    // 销毁Session
    session_destroy();
    
    echo "<h2>Session已销毁</h2>";
    echo '<a href="session_show.php">验证Session是否已销毁</a>';
    ?>

验证标准

  • Session能够正确设置和读取数据
  • 购物车功能正常工作
  • Session销毁功能正常

实验五:虚拟主机配置

实验目标

掌握Apache虚拟主机的配置方法

实验内容

  1. 配置虚拟主机文件

    • 编辑 C:\wamp\bin\apache\apache2.4.9\conf\extra\httpd-vhosts.conf
    apache 复制代码
    # 默认虚拟主机
    <VirtualHost *:80>
        DocumentRoot "C:/wamp/www"
        ServerName localhost
        <Directory "C:/wamp/www">
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
    </VirtualHost>
    
    # 测试站点1
    <VirtualHost *:80>
        DocumentRoot "C:/wamp/www/site1"
        ServerName site1.test
        <Directory "C:/wamp/www/site1">
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
        ErrorLog "C:/wamp/logs/site1_error.log"
        CustomLog "C:/wamp/logs/site1_access.log" common
    </VirtualHost>
    
    # 测试站点2
    <VirtualHost *:80>
        DocumentRoot "C:/wamp/www/site2"
        ServerName site2.test
        <Directory "C:/wamp/www/site2">
            Options Indexes FollowSymLinks
            AllowOverride All
            Require all granted
        </Directory>
        ErrorLog "C:/wamp/logs/site2_error.log"
        CustomLog "C:/wamp/logs/site2_access.log" common
    </VirtualHost>
  2. 启用虚拟主机配置

    • 编辑 C:\wamp\bin\apache\apache2.4.9\conf\httpd.conf

    • 确保以下行没有被注释:

      Include conf/extra/httpd-vhosts.conf

  3. 配置hosts文件

    • 编辑 C:\Windows\System32\drivers\etc\hosts

    • 添加以下行:

      127.0.0.1 site1.test
      127.0.0.1 site2.test

  4. 创建测试站点

    • 创建目录 C:\wamp\www\site1C:\wamp\www\site2
    • 创建 site1/index.php
    php 复制代码
    <?php
    header('Content-Type: text/html; charset=utf-8');
    echo "<h1>欢迎访问站点 1 (site1.test)</h1>";
    echo "服务器名: " . $_SERVER['SERVER_NAME'] . "<br>";
    echo "文档根目录: " . $_SERVER['DOCUMENT_ROOT'];
    ?>
    • 创建 site2/index.php
    php 复制代码
    <?php
    header('Content-Type: text/html; charset=utf-8');
    echo "<h1>欢迎访问站点 2 (site2.test)</h1>";
    echo "服务器名: " . $_SERVER['SERVER_NAME'] . "<br>";
    echo "文档根目录: " . $_SERVER['DOCUMENT_ROOT'];
    ?>
  5. 虚拟主机特定配置

    • site1 中创建 .htaccess 文件测试URL重写:
    apache 复制代码
    RewriteEngine On
    RewriteRule ^hello$ welcome.php [L]
    • 创建 site1/welcome.php
    php 复制代码
    <?php
    header('Content-Type: text/html; charset=utf-8');
    echo "<h1>欢迎页面!</h1>";
    echo "通过URL重写访问的页面。";
    ?>

验证标准

  • 能够通过 http://site1.testhttp://site2.test 访问不同站点
  • 每个站点显示正确的服务器信息和文档根目录
  • URL重写功能正常工作

相关推荐
前端一课36 分钟前
【vue高频面试题】第5题:Vue3 的父子组件通信方式有哪些?分别适用于什么场景?
前端·面试
前端一课40 分钟前
【vue高频面试题】第6题:Vue3 中 Composition API 和 Options API 有什么区别?为什么 Composition API 更推荐
前端·面试
前端一课44 分钟前
【vue高频面试题】第7题:Vue3 中 `v-model` 的工作原理是什么?为什么 Vue3 支持多个 v-model?如何在子组件中实现?
前端·面试
luguocaoyuan44 分钟前
前端沙箱隔离技术详解:从原理到实践
前端
前端一课1 小时前
【vue高频面试题】第3题:Vue 3 中的 computed 是什么?和 watch 有什么区别?什么时候用哪一个?
前端·面试
Json____1 小时前
vue2-数码购物商城-前端静态网站
前端·vue·数码商城
@大迁世界1 小时前
03.CSS嵌套 (Nesting)
前端·css
DevUI团队1 小时前
解锁前端高阶调试:浏览器/IDE/Git技巧分享
前端·javascript·html
前端一课1 小时前
【vue高频面试题】第一题:Vue 3 相比 Vue 2,有哪些重大变化?
前端·面试