【问题标题】:multiple forms accessing one PHP page and form validation多个表单访问一个 PHP 页面和表单验证
【发布时间】:2012-02-10 17:57:09
【问题描述】:

首先,我没有代码……我正在收集启动项目所需的数据。

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

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

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

既然我们在谈论验证,那么在客户端是 JS 还是 JQuery 更好(我可以两者都写)?关于数据库的事情,我怎样才能保护它?!!我的意思是,我如何确保用户不会输入 PHP 代码来搞砸事情以及如何检测到它。

我知道这似乎是一般性问题或讨论,但你会帮助我很多。坦率地说,我已经使用这个网站大约 3 年了,你们帮助我以优异的成绩通过了我的研究生项目:) 所以我愿意在这里找到答案:)

谢谢大家。

【问题讨论】:

    标签: php html forms validation


    【解决方案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。此外,在使用验证时,通常最好将其列入白名单而不是列入黑名单。

    【讨论】:

    • ok JohnP,你能告诉我 MySQLi 和 MySQL 有什么区别吗?我一直在使用 MySQL,并将在项目和即将推出的项目中使用它。
    • 是改进的mysql库。如果您使用的是 PHP5,那么强烈建议您使用它。它是为了利用 mysql 中的新功能而编写的,并且对原始扩展进行了一些安全改进 - 这个问题有一些细节 - stackoverflow.com/questions/1171344/…
    【解决方案2】:

    如果您有多个表单提交到同一个页面,您可以通过发送隐藏数据字段来识别表单,例如:

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

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

    在对用户输入进行任何操作之前验证用户输入,并在适当时转义。比如mysql_real_escape_string当你把东西放在查询中,或者使用准备好的语句时。

    【讨论】:

      【解决方案3】:

      每个都有一个隐藏字段来确定操作是什么...

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

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

      【讨论】:

        猜你喜欢
        • 2021-10-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多