原因就是当用户点击提交表单后会访问你的后台处理页,在连接和处理过程中,用户界面是不会变的,即用户可以连续提交。
如果用户只提交了一次,那么你现在的程序没问题。
如果用户在你处理提交内容时又提交了一次,那样你在处理第二次提交时由于第一次提交还没处理到扣除点数那里,所以查出的剩余点数和第一次是一样的,即两次提交都会处理,最后都会扣除点数。
而当上述情况在你处理的过程中多次发生,比如连续100次提交,同时处理100次,最后同时扣除点数,就会产生负几百的现象了。解决方法是禁止重复提交,前端可以用javascript方法禁止,服务端可以通过session方法禁止。
安全级别高的话,数据库也可以再加个事务来防止