如何防止options.php从数据库中删除有效的现有数据

时间:2013-01-29 作者:Pete Lawless

我正在设置一个插件,并首次使用设置API在设置中创建表单。默认情况下,当插件被激活并以序列化格式存储在数据库中时,最初会创建插件的数据。

今天,我添加了验证回调函数,它可以很好地进行验证。但是,当任何字段验证失败并且函数返回false(我也尝试返回NULL)时,数据库中现有的有效数据将被删除。

问题是事情是怎么发生的,还是我在做傻事?在这种情况下,我原本预计数据库中现有的有效数据将保持不变,直到用户提供了一组有效数据来修改它为止。

感谢您的任何建议。

1 个回复
SO网友:Simon

你的sanitize_callback 函数不应返回falsenull 指示输入无效-其目的是始终返回有效值。此函数返回的值是将保存到数据库的值,因此为了让它真正清理任何内容,它必须返回有意义的内容。将其与使用进行比较intval 如中所示this example, 这将强制设置API存储int 值,无论输入是什么。

无论如何,要解决您的问题,您应该:

返回previously stored 如果输入无效,则返回值default value 如果输入为空(不允许为空值),则返回newly input 值如果它被认为是有效的此外,除了最后一条语句之外,您的值很可能在卫生过程中变得有效:想象一下输入,例如" [email protected]""0123" 可能会被消毒"[email protected]"123 根据您的需要。

结束

相关推荐

Comment form validation

如何设置注释字段的验证规则?我更改了评论者姓名/电子邮件/主页onmouseover和onblur的值(我使用它而不是标签-因此如果字段为空,它会显示“您的电子邮件”、“您的主页”等)。问题是,在提交时,它会在主页字段中提交此文本(因为它没有验证,而不像电子邮件字段,如果您输入了除[email protected]).如何验证主页字段?