有几个选项可供您使用:
- 在插入数据库之前验证表单发布数据
- 包含仅在提交之前出现在表单中的 nonce 或其他生成的值
您要解决的问题听起来确实像您想禁止将空白记录插入数据库 - 不一定是您想阻止对 add.php 的访问。这就是选项#1 发挥作用的地方。
在您当前的 add.php 中,听起来需要进行一些输入验证。基本上,您将检查脚本接收到的值以确保它们存在。例如,如果 add.php 接受名字,作为电话簿应用程序的一部分,您将拥有类似于以下的代码:
$firstName = '';
if(isset($_GET['firstName']))
$firstName = $isset($_GET['firstName']);
// ...
if(trim($firstName) == '')
//do something to handle an error, either set an error flag or die() with an appropriate message
这是输入验证的基本示例,PHP 有一个您可能想熟悉的验证库:http ://www.php.net/manual/en/intro.filter.php
有了这个输入验证,有人可以导航到 add.php 并且应该会收到一个错误。它还将检测是否有人提交了空白表格。
#2 要求您的表单在生成时接收一个唯一值,称为 nonce。nonce 是特定于该表单实例的唯一值。如果 nonce 有效,后续对 add.php 的调用将只接受请求。一种方法可能是将随机数存储在用户的会话中。
问题范围之外的另一个注意事项,因为您要将数据插入数据库,所以您应该确保正确转义插入的数据。如果您使用的是 MySQL,请参见此处:http ://www.php.net/manual/en/mysqli.real-escape-string.php 。如果使用另一个数据库引擎,您将需要查找特定库以了解如何转义字符串。