当前位置:首页 > 行业动态 > 正文

如何通过HTML表格实现数据库数据删除?

HTML表格可通过结合后端语言(如PHP、Python)实现数据库数据删除功能,在每行添加删除按钮,提交请求至服务器执行SQL删除操作,需注意数据安全防护和操作确认机制。

实现原理

通过HTML表格展示数据库中的数据,每条数据旁添加“删除”按钮,用户点击按钮后,前端通过JavaScript发送异步请求到后端接口,后端验证权限并执行SQL删除操作。整个过程需严格遵循以下安全规范


安全注意事项

  1. 权限验证

    如何通过HTML表格实现数据库数据删除?  第1张

    • 后端必须验证用户登录状态与操作权限(如管理员角色)。
    • 示例代码(PHP):
      session_start();
      if (!isset($_SESSION['user_id']) || $_SESSION['role'] !== 'admin') {
          http_response_code(403);
          exit("无操作权限");
      }
  2. 防SQL注入

    • 使用预处理语句(Prepared Statements),禁止拼接SQL。
    • 示例代码(PHP+MySQLi):
      $stmt = $conn->prepare("DELETE FROM products WHERE id = ?");
      $stmt->bind_param("i", $target_id);
      $stmt->execute();
  3. CSRF防护

    • 为删除请求添加CSRF Token验证:
      <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
  4. 操作日志

    记录删除操作的关键信息:操作人、时间、删除的数据ID。


前端代码示例

<table class="data-table">
  <tr>
    <th>产品名称</th>
    <th>价格</th>
    <th>操作</th>
  </tr>
  <?php foreach ($products as $product): ?>
  <tr>
    <td><?php echo htmlspecialchars($product['name']); ?></td>
    <td><?php echo $product['price']; ?></td>
    <td>
      <button 
        class="delete-btn" 
        data-id="<?php echo $product['id']; ?>"
        onclick="confirmDelete(<?php echo $product['id']; ?>)"
      >
        删除
      </button>
    </td>
  </tr>
  <?php endforeach; ?>
</table>
<script>
function confirmDelete(id) {
  if (confirm("确认删除该数据?操作不可撤销!")) {
    fetch('/api/delete-data', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ id: id, csrf_token: '<?php echo $_SESSION['csrf_token']; ?>' })
    }).then(response => {
      if (response.ok) location.reload(); // 刷新表格
    });
  }
}
</script>

后端处理流程(Python示例)

from flask import request, session
import mysql.connector
@app.route('/api/delete-data', methods=['POST'])
def delete_data():
    # 1. 验证用户权限
    if 'user_id' not in session or session['role'] != 'admin':
        return {"status": "error", "message": "权限拒绝"}, 403
    # 2. 获取并验证数据
    data = request.get_json()
    target_id = data.get('id')
    csrf_token = data.get('csrf_token')
    if not target_id or csrf_token != session.get('csrf_token'):
        return {"status": "error", "message": "非规请求"}, 400
    # 3. 执行删除
    try:
        conn = mysql.connector.connect(...)
        cursor = conn.cursor(prepared=True)
        cursor.execute("DELETE FROM products WHERE id = %s", (target_id,))
        conn.commit()
        return {"status": "success"}
    except Exception as e:
        return {"status": "error", "message": str(e)}, 500

增强用户体验设计

  • 二次确认:弹窗提示(可使用SweetAlert代替原生confirm)
  • 视觉反馈:删除成功后添加过渡动画或高亮提示
  • 错误处理:前端捕获HTTP 500错误并显示友好提示

法律合规建议

  1. 遵循《网络安全法》与GDPR,删除敏感数据前需获得用户明确授权
  2. 在隐私政策中说明数据删除规则
  3. 重要数据建议采用软删除(标记为已删除状态)而非物理删除

延伸阅读

  • OWASP SQL注入防护指南:[链接至owasp.org]
  • MySQL预处理语句文档:[链接至dev.mysql.com]
  • GDPR数据删除条款:[链接至eur-lex.europa.eu]
0