You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP语法错误求助:edit.php第108行意外文件结束报错

解决 Parse Error: Unexpected End of File 问题

这个错误几乎都是由于代码中的大括号{}未正确配对,或者PHP标签没有正确闭合导致的。我仔细检查了你的代码,发现虽然表面上括号都配对了,但把代码挤在一行很容易出现疏漏,而且还有一些其他潜在问题需要修复。

第一步:修复语法错误

我把你的PHP代码拆分成多行,这样更容易排查问题,同时确保所有括号正确闭合。以下是修复后的完整代码:

<?php 
// Start the session 
session_start(); 
?>
<!DOCTYPE html>
<html>
<head>
    <title>Matts Mobile</title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
<header>
    <div class="col span_1_of_3">
        <div class="logo">
            <a href="index.php"><img src="images/logo.png" style="width:150px;height:150px;"></a>
        </div>
    </div>
    <div class="col span_2_of_3">
        <div class="z">
            <img src="images/m3.jpg" style="width:70%;">
        </div>
        <div class="topnav">
            <!-- 这里填充你的导航内容 -->
        </div>
    </div>
    <?php 
    // 获取页码参数,添加默认值避免未定义错误
    $pagenum = isset($_GET["pagenum"]) ? $_GET["pagenum"] : 1; 
    include 'setup.php'; 

    // 管理员登录验证
    if(isset($_SESSION['username'])){ 
        if($_SESSION["username"] == $user) {
            $message= "Welcome admin"; 
            echo "<p>$message</p>"; // 显示欢迎信息
        } 
    } else { 
        header('Location: login.php'); 
        exit; // 跳转后立即终止脚本,避免后续代码执行
    } 

    // 获取页面信息
    $sql = "SELECT * FROM pages where pagenum = ?"; 
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("i", $pagenum);
    $stmt->execute();
    $result = $stmt->get_result();
    $row = $result->fetch_assoc(); 

    if(!$row){
        echo "0 results";
    } else { 
        $pagenum = $row["pagenum"]; 
        $pagetitle = $row["pagetitle"]; 
        $pagetext = $row["pagetext"]; 
    } 

    // 获取产品信息(注意:建议单独建products表,而非存在pages表中)
    $sql = "SELECT * FROM products"; 
    $result = $conn->query($sql);
    $products = mysqli_fetch_all($result,MYSQLI_ASSOC) ; 

    $conn->close(); 
    ?>
</header>
<main>
    <div class="main_container">
        <form action="update.php" method="post">
            Page Number: <input type="text" name="pagenum" value="<?php echo htmlspecialchars($pagenum); ?>" ><br>
            Page Title: <input type="text" name="pagetitle" value="<?php echo htmlspecialchars($pagetitle); ?>" ><br>
            Products: 
            <?php foreach($products as $product): ?>
                <label>
                    <?php echo $product['product_id']; ?>
                    <input type="checkbox" name="stock[]" value="<?php echo $product['product_id']; ?>" 
                        <?php // 可根据库存状态添加checked属性,例如:if($product['stock'] > 0) echo 'checked'; ?>
                    >
                </label>
            <?php endforeach; ?>
            <br>
            <textarea name="pagetext" rows="5" cols="40"><?php echo htmlspecialchars($pagetext);?></textarea>
            <br>
            <input type="submit" value="Update">
        </form>
    </div>
</main>
</body>
</html>

第二步:关键修复点说明

  1. 完整HTML结构:补充了缺失的<html>和<head>标签,避免页面结构异常。
  2. 代码格式化:将挤在一行的PHP代码拆分成多行,确保每个{都有对应的},彻底解决“意外文件结束”的语法错误。
  3. SQL注入防护:把直接拼接变量的SQL语句改为预处理语句,这是生产环境必须的安全措施,防止恶意注入。
  4. 未定义变量处理:给$pagenum添加默认值,避免$_GET["pagenum"]不存在时的警告错误。
  5. 跳转逻辑优化:在跳转登录页的代码后添加exit;,确保脚本立即终止,不会执行后续代码。
  6. 产品查询优化:原代码中$product_id未定义且查询逻辑不合理,建议单独创建products表,通过循环输出产品复选框,更适配批量编辑库存的需求。
  7. XSS防护:用htmlspecialchars()转义所有输出的变量,避免跨站脚本攻击。

第三步:开发调试建议

  • 检查setup.php文件,确保数据库连接代码正确,且$user变量已定义(例如$user = "admin";)。
  • 开发阶段开启PHP错误提示,在setup.php开头添加:
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    
    这样能快速定位代码中的各类问题。

内容的提问来源于stack exchange,提问作者M.g

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:53:30