Laravel开发:如何实现用户通过Web应用编辑数据库表?
实现Web应用编辑数据库表的方案
完全可以实现用户通过Web应用编辑数据库表,给你一步步捋清楚怎么做:
先调整前端按钮的问题
你现在的按钮是type="button",而且表单没指定后端接口,点击后不会触发任何操作,先把前端代码改一下:
<div id="container"> <div class="button1"> <form action="/handle-table-actions" method="post"> <input type="hidden" name="action_type" value="add_delete"> <input type="submit" name="submit" value="Add/Delete table"/> </form> </div> <div class="button2"> <form action="/handle-table-actions" method="post"> <input type="hidden" name="action_type" value="change"> <input type="submit" name="submit" value="Change table"/> </form> </div> </div>
- 把
type="button"改成type="submit",点击按钮就能提交表单 - 加隐藏字段
action_type,用来告诉后端是执行「增删表」还是「修改表」操作 method用post,比get更安全(操作数据库属于写操作,get会把参数暴露在URL里)action填你后端处理请求的接口路径(比如/handle-table-actions,具体路径看你后端框架的路由设置)
分功能实现后端逻辑
1. Add/Delete table 功能
- 前端扩展:点击按钮后,用原生JS写个模态框,让用户选「添加表」还是「删除表」,输入表名(添加)或选择要删除的表(删除),把这些参数一起提交给后端
- 后端处理:
- 先校验用户权限(必须是输入专属代码的合法用户,后端要再做一次校验,不能只靠前端)
- 根据
action_type和用户提交的参数,执行对应SQL语句:- 添加表:用
CREATE TABLE 表名 (id INT AUTO_INCREMENT PRIMARY KEY, question TEXT, answer TEXT)(可以预设问答表的字段,比如问题、答案) - 删除表:用
DROP TABLE 表名,一定要加二次确认,防止误删
- 添加表:用
- 关键:绝对不能直接把用户输入拼进SQL语句,要用后端语言的预处理语句(比如Python的SQLAlchemy、PHP的PDO),防止SQL注入攻击
2. Change table 功能
这个功能分两种场景:
- 如果是修改表结构(比如加字段、改字段类型):前端让用户选择要修改的表,输入新增字段名和类型,后端用
ALTER TABLE 表名 ADD COLUMN 字段名 类型处理 - 如果是修改表中的问答内容:前端先展示对应表的所有数据,让用户选择要编辑的条目,修改后提交,后端用
UPDATE 表名 SET question=?, answer=? WHERE id=?这类预处理语句更新数据
必做的安全事项
- 权限校验:这个页面是操作数据库的敏感页面,后端每次处理请求都要再次校验用户权限
- 操作确认:删除表、修改表结构这类高危操作,必须让用户二次确认
- 输入校验:对用户输入的表名、字段名做合法性校验,比如禁止特殊字符,限制长度
内容的提问来源于stack exchange,提问作者Interestn_
相关产品推荐
相关产品推荐

