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>
第二步:关键修复点说明
- 完整HTML结构:补充了缺失的
<html>和<head>标签,避免页面结构异常。 - 代码格式化:将挤在一行的PHP代码拆分成多行,确保每个
{都有对应的},彻底解决“意外文件结束”的语法错误。 - SQL注入防护:把直接拼接变量的SQL语句改为预处理语句,这是生产环境必须的安全措施,防止恶意注入。
- 未定义变量处理:给
$pagenum添加默认值,避免$_GET["pagenum"]不存在时的警告错误。 - 跳转逻辑优化:在跳转登录页的代码后添加
exit;,确保脚本立即终止,不会执行后续代码。 - 产品查询优化:原代码中
$product_id未定义且查询逻辑不合理,建议单独创建products表,通过循环输出产品复选框,更适配批量编辑库存的需求。 - XSS防护:用
htmlspecialchars()转义所有输出的变量,避免跨站脚本攻击。
第三步:开发调试建议
- 检查
setup.php文件,确保数据库连接代码正确,且$user变量已定义(例如$user = "admin";)。 - 开发阶段开启PHP错误提示,在
setup.php开头添加:
这样能快速定位代码中的各类问题。error_reporting(E_ALL); ini_set('display_errors', 1);
内容的提问来源于stack exchange,提问作者M.g
相关产品推荐
相关产品推荐

