PHP中如何实现删除链接?我的删除功能代码存在哪些问题?
代码中的错误及修复方案
删除链接传递的ID无效
循环里的$id是你自定义的自增序号,并非数据库表book的主键BID。用这个序号作为删除条件匹配BID,根本找不到对应的数据行,自然无法完成删除。
修复:传递数据库中真实的BID:echo "<td><a href='view_books.php?id={$row["BID"]}'>Delete</a></td>";权限判断逻辑完全颠倒
当前代码中if(!isset($_SESSION["AID"]))的逻辑是:管理员未登录时才执行删除,这完全违背权限控制的初衷——应该是管理员登录后才能执行删除操作,未登录则跳转至登录页。
修复:修正条件判断:if(isset($_SESSION["AID"])) { // 执行删除逻辑 } else { header("location:alogin.php"); die(); }存在严重SQL注入风险
直接将$_GET['id']拼接进SQL语句,恶意用户可构造特殊值执行任意SQL操作,导致数据库被破坏。
修复:使用mysqli预处理语句:$id = $_GET['id']; $stmt = $conn->prepare("DELETE FROM `book` WHERE `BID` = ?"); $stmt->bind_param("i", $id); // 若BID为字符串类型,替换为"s" $stmt->execute(); $stmt->close();删除后跳转逻辑不合理
删除完成后跳转到登录页不符合正常流程,管理员需要看到删除后的列表结果。
修复:跳转回书籍列表页面:header("location:你的书籍列表页面路径.php"); die();缺少错误检查机制
未判断删除操作是否执行成功,无法排查删除失败的具体原因。
修复:添加错误检查(以预处理语句为例):if(!$stmt->execute()) { echo "删除失败:" . $conn->error; }
内容的提问来源于stack exchange,提问作者Sin 1
相关产品推荐
相关产品推荐

