我知道如何使用客户端 (JAVASCRIPT
)、服务器端 (PHP
) 和数据库(MySQL 中的触发器
)来验证数据。在处理大型应用程序进程时,我是否要验证所有这些方法中的数据?如果我使用这些方法来验证它是否慢?如果它是禁食的方法是什么?
JAVASCIPT
var data $("#input").val();
if(is_nan(data)){
}
PHP
if(empty($_POST['input'])){
}
MySQL
DELIMITER $$
CREATE TRIGGER example_before_insert
BEFORE INSERT ON registrations FOR EACH ROW
BEGIN
IF NEW.RG_Reg_NO NOT REGEXP '^[A-Z]{3}\/[A-Z]-\d{6}$' THEN
SIGNAL SQLSTATE '45000'
SET MESSAGE_TEXT = 'The registration number you have entered is wrong';
END IF;
END;
$$
最佳答案
这是我的方法和观点:
始终需要客户端验证有两个原因:
- 更好的用户体验
- 避免往返服务器并减少负载(这是 Netscape 首先提出 javascript 的主要原因)。
始终需要服务器端验证有两个原因:
- 安全!因为有人总是可以发布请求 (curl) 并绕过您的客户端验证。
- 为禁用 js 的客户端提供回退(如今非常罕见)。
数据库验证:
- 如果您必须避免编写服务器端代码的团队犯错,请使用这些错误。
- 如果您的团队规模较小,并且编写服务器端代码的人能够实现所有业务逻辑而无需在另一级别进行双重检查,那么就不要使用它们。
- 如果您更喜欢生产力和灵 active 而不是数据完整性,请不要使用它们。
- 如果您的团队中没有真正知道如何处理 sql spaghetti 的人,那么请不要使用他们!
- 如果您的应用程序太大以至于性能开始成为问题,那么在进入 SQL 意大利面条迷宫之前,您必须首先检查 NOSQL 解决方案是否满足您的要求。还聘请经验丰富的 dba。
欢迎补充更多原因或纠正我的错误。
关于javascript - 在将数据插入数据库之前验证数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20936858/