2012-01-15 47 views
1

首先,我没有任何代码......我正在收集所需的数据以启动一个项目。访问一个PHP页面和表单验证的多个表单

我将在一个网站上有多个<form> s,这些网站都链接到相同的PHP页面,例如发送电子邮件或向数据库添加数据。

现在,我可以构建表单和PHP页面来发送邮件或将数据添加到数据库。但是这里是我需要知道的一点......如果任何表单调用PHP页面,我怎么知道哪一个表单做了相应的操作?

另外,对表单进行双重验证会更好吗?我的意思是,客户端然后服务器端?

由于我们谈论的是验证,在客户端,JS还是JQuery(我可以同时编写)是否更好?而关于DB的事情,我该如何保护它?!我的意思是,我如何确保用户不会输入PHP代码来搞乱事情,以及如何检测它。

我知道这似乎是一般问题或讨论,但你会帮助我很多。坦率地说,我一直在使用这个网站大约3年,现在你们帮助我通过我的毕业设计项目,因此我很乐意在这里找到答案:)

谢谢大家。

回答

1

您可以在表单中使用隐藏字段来表示应发生哪种操作。您也可以在表单的ACTION属性中仅包含一个参数。无论哪种方式,结果相同

<form> 
    <input type='hidden' name='mode' value='save'> 
    <!-- More HTML --> 
</form> 

<form> 
    <input type='hidden' name='mode' value='delete'> 
    <!-- More HTML --> 
</form> 

为进行验证,首先需要进行服务器端验证,然后添加客户端验证以减少服务器处理并减少往返时间。人们会喜欢响应式设计。有很多可用的表单验证工具,请查看此问题的相关链接。

为了安全起见,请确保您使用的是PDOMysqli扩展名来创建您的查询。黄金法则是逃避你的输入并编码你的输出。你可以使用像htmlspecialchars()这样的方法来编码你的输出。并利用PHP的Filter方法。这将极大地帮助你 - http://php.net/manual/en/book.filter.php。此外,在验证时使用白名单而不是黑名单通常更好。

+0

好的JohnP,你能告诉我MySQLi和MySQL有什么区别...我一直在使用MySQL,并且会在项目中使用它,也会在即将到来的项目中使用它。 – sikas 2012-01-15 10:55:07

+0

这是改进的mysql库。如果你使用PHP5,那么强烈建议你使用这个。它的写入是为了利用mysql中的新特性,并且它对原始扩展有一些安全性改进 - 这个问题有一些细节 - http://stackoverflow.com/questions/1171344/advantages-of-mysqli-over-mysql – JohnP 2012-01-15 13:50:49

1

在每个隐藏字段来确定动作是什么...

<input type="hidden" name="action" value="cart" /> 

OR

<input type="hidden" name="action" value="purchase" /> 
1

如果你有多个形式提交到同一个页面,您可以识别的形式沿着一个隐藏的数据字段发送,如:

<input type="hidden" name="form_name" value="001" /> 

输入验证应该总是在服务器上发生。客户端验证对用户来说很好,但服务器端是必须的。

验证用户输入之前,你做任何事情,在适当的时候转义。比如mysql_real_escape_string,当你把东西放在一个查询中,或者使用准备好的语句。