首先,我没有代码......我正在收集所需数据以启动项目。
我将在一个网站上有多个<form>
,它们都链接到同一个PHP页面,例如发送电子邮件或向数据库添加数据。
现在,我可以构建表单,以及用于发送邮件或向DB添加数据的PHP页面。但这里是我需要了解的一点......如果任何表单调用PHP页面,我怎么知道哪个表单做了相应的操作?
另外,对表单进行双重验证是否更好?我的意思是,客户端然后服务器端?
既然我们正在谈论验证,那么在客户端,JS或JQuery(我可以同时编写)更好吗?关于数据库的事情,我该如何保护它?!!我的意思是,我怎样才能确保用户不会输入PHP代码来解决问题以及如何检测它。
我知道这似乎是一般问题或讨论,但你会帮助我很多。坦率地说,我现在已经使用这个网站大约3年了,你们帮助我通过了我的毕业设计并获得了优秀的成绩:)所以我愿意在这里找到答案:)
谢谢大家。
答案 0 :(得分:1)
在每个字段中都有一个隐藏字段来确定操作是什么......
<input type="hidden" name="action" value="cart" />
OR
<input type="hidden" name="action" value="purchase" />
答案 1 :(得分:1)
如果您有多个表单提交到同一页面,您可以通过发送隐藏数据字段来识别表单,例如:
<input type="hidden" name="form_name" value="001" />
输入验证应该始终在服务器上发生。客户端验证对您的用户来说很好,但服务器端是必须的。
在对任何内容执行任何操作之前验证用户输入,并在适当时进行转义。例如,当您将内容放入查询中时,mysql_real_escape_string
或使用预准备语句。
答案 2 :(得分:1)
您可以使用表单中的隐藏字段来表示应该执行的操作。您还可以在表单的ACTION属性中包含一个参数。两种方式都有相同的结果。
<form>
<input type='hidden' name='mode' value='save'>
<!-- More HTML -->
</form>
<form>
<input type='hidden' name='mode' value='delete'>
<!-- More HTML -->
</form>
对于验证,首先是服务器端验证,然后添加客户端验证以减少服务器处理并减少往返时间。人们会欣赏响应式表单设计。有很多表单验证工具可用,只需查看此问题的相关链接。
为了安全起见,请确保您使用PDO或Mysqli扩展程序来创建查询。黄金法则是逃避输入并对输出进行编码。您可以使用htmlspecialchars()等方法对输出进行编码。并使用PHP的Filter方法。这将极大地帮助你 - http://php.net/manual/en/book.filter.php。此外,在使用验证时,白名单通常更好,而不是黑名单。