php - 为什么我的数据库经常产生一些空白和重复数据?
PHP中文网
PHP中文网 2017-04-11 10:15:28
[PHP讨论组]

这是页面提交图:

这是我的表单提交代码:

这是数据库的结构和代码:

图片描述

//图片里面connect 用的还是本地测试的地址

就搞不懂为啥。。会莫名奇妙的一些 空白数据,和重复的数据出来。。求大神

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(7)
阿神

首先,你获取到输入框中的值,并没有进行首尾的空格过滤操作。所以,即使你验证是否为空,答案也是否。

第二,你使用了encodeURIComponent() 函数对字符串作为 URI 组件进行编码。那么空格也将会被转换为一些字符串,所以,你对比是否为空,更加不可能。

所以,提交用户输入最基本过滤是

JS:

notes = note.value.trim();

这一步会去除首尾空格。

PHP:

$request = trim($_GET['notes']);

这一步在php里面也会去除首尾空格。最基本验证。

PHP中文网

您用get提交到后端,后端并没有验证,所以您手一滑就提交好多空白重复的数据

迷茫

在服务器端生成一个随机字符串,在返回的表单页面的时候把这个字符串放个隐藏的input里,提交的时候把这个一起提交上去,如果两个字符串相等,就提交到数据库,不相等说明表单提交过或非法,就不要插入了

迷茫

要做好一个防止提交啊,
1、前端可以置灰按钮
2、后台加验证,提交过了就不要重复提交了

ringa_lee

加个防抖功能,提交后按钮置灰或者提交后重定向到新的页面。担心重复的话在数据库加个唯一索引。至于为空的就直接后台trim保存之前去掉就行。

迷茫

重复数据有可能是你未设置重复提交,手滑在鼠标点击的那一刻,瞬间点了N次造成的。
另外,空白数据有可能是这sql语句造成的

$sql = "insert into express values(null,'".$message."',".$ip.",".$time.")";
天蓬老师

永远不要相信前端传给后端的值 , 前端验证过了 ,后端最好也要验证一遍,很重要

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号