扫码关注官方订阅号
这是页面提交图:这是我的表单提交代码:
这是数据库的结构和代码:
图片描述
//图片里面connect 用的还是本地测试的地址
就搞不懂为啥。。会莫名奇妙的一些 空白数据,和重复的数据出来。。求大神
认证高级PHP讲师
首先,你获取到输入框中的值,并没有进行首尾的空格过滤操作。所以,即使你验证是否为空,答案也是否。
第二,你使用了encodeURIComponent() 函数对字符串作为 URI 组件进行编码。那么空格也将会被转换为一些字符串,所以,你对比是否为空,更加不可能。
encodeURIComponent()
所以,提交用户输入最基本过滤是
JS:
notes = note.value.trim();
这一步会去除首尾空格。
PHP:
$request = trim($_GET['notes']);
这一步在php里面也会去除首尾空格。最基本验证。
您用get提交到后端,后端并没有验证,所以您手一滑就提交好多空白重复的数据
get
在服务器端生成一个随机字符串,在返回的表单页面的时候把这个字符串放个隐藏的input里,提交的时候把这个一起提交上去,如果两个字符串相等,就提交到数据库,不相等说明表单提交过或非法,就不要插入了
要做好一个防止提交啊,1、前端可以置灰按钮2、后台加验证,提交过了就不要重复提交了
加个防抖功能,提交后按钮置灰或者提交后重定向到新的页面。担心重复的话在数据库加个唯一索引。至于为空的就直接后台trim保存之前去掉就行。
重复数据有可能是你未设置重复提交,手滑在鼠标点击的那一刻,瞬间点了N次造成的。另外,空白数据有可能是这sql语句造成的
$sql = "insert into express values(null,'".$message."',".$ip.",".$time.")";
永远不要相信前端传给后端的值 , 前端验证过了 ,后端最好也要验证一遍,很重要
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
首先,你获取到输入框中的值,并没有进行首尾的空格过滤操作。所以,即使你验证是否为空,答案也是否。
第二,你使用了
encodeURIComponent()函数对字符串作为 URI 组件进行编码。那么空格也将会被转换为一些字符串,所以,你对比是否为空,更加不可能。所以,提交用户输入最基本过滤是
JS:
这一步会去除首尾空格。
PHP:
这一步在php里面也会去除首尾空格。最基本验证。
您用
get提交到后端,后端并没有验证,所以您手一滑就提交好多空白重复的数据在服务器端生成一个随机字符串,在返回的表单页面的时候把这个字符串放个隐藏的input里,提交的时候把这个一起提交上去,如果两个字符串相等,就提交到数据库,不相等说明表单提交过或非法,就不要插入了
要做好一个防止提交啊,
1、前端可以置灰按钮
2、后台加验证,提交过了就不要重复提交了
加个防抖功能,提交后按钮置灰或者提交后重定向到新的页面。担心重复的话在数据库加个唯一索引。至于为空的就直接后台trim保存之前去掉就行。
重复数据有可能是你未设置重复提交,手滑在鼠标点击的那一刻,瞬间点了N次造成的。
另外,空白数据有可能是这sql语句造成的
永远不要相信前端传给后端的值 , 前端验证过了 ,后端最好也要验证一遍,很重要