【问题标题】:What is a good way to process data from a form before applying business logic in PHP?在 PHP 中应用业务逻辑之前处理表单数据的好方法是什么?
【发布时间】:2009-11-17 06:17:53
【问题描述】:

我认为这是一个常见问题。

只要网页上有表单,后端就会有一个 PHP 文件处理从表单发送来的数据。你以$_POST开头,你需要保证输入元素的名字没有被篡改、增加或者减少,并且你要确保没有输入元素是空白的,你还需要转义引号,所以你在将业务逻辑应用于这些数据之前,可能需要使用isset()empty()mysql_real_escape_string() 或其他函数来执行此例行工作。

完成这项日常工作的最佳方法是什么?

我想编写更少的代码,并使其健壮。

也许没有最好的方法,但至少有好的方法可以做到。怎么做?

为了方便,假设有username, password, title, content, question, answer,unit_price,...这样的数据

如果我不使用任何 PHP 框架怎么办?

【问题讨论】:

  • 我想每个 PHP 框架都有自己的表单验证机制。选择一个并使用它。

标签: php validation


【解决方案1】:

恕我直言,

Zend_Form 组件提供了一种很好的健壮的可重用方式来执行此类任务。

【讨论】:

  • 恕我直言,使用 Zend_Form 只是为了进行输入验证增加了很多臃肿。但我也很反zend。话虽如此,这是一个有效的选择,所以+1。
  • @MitMaro:是的,你是对的,你也可以渲染表单并做一些模板(视图),Zend_Validate 会匹配更多的验证部分,但我不太喜欢这个想法设置每个验证器并检查它们的状态,因此在没有渲染部分的情况下使用Zend_Form 更好恕我直言
  • @Steven:我会说你可以做你自己的课程和工具,但这有点白白地重新发明了井。 Zend Framework 的构造方式是你不必使用所有东西,你可以只使用你感兴趣的部分,所以如果我是你,我会试一试
  • @RageZ,Zend Framework 可能不错,但如果我使用它,我不得不停下来花很多时间学习它。学习成本
  • @Steven:当然,但是您认为构建您的工具集需要多长时间?更多/更少?
【解决方案2】:

正如RageZ 谈论过Zend_Form...如果你真的只是在过滤和验证部分之后,你不必使用Zend_Form 的(有时)臃肿而复杂的界面。你可以使用Zend_Filter_Input,实际上是Zend_Form,没有forms(渲染部分)。您可以使用与Zend_Form 中相同的过滤器和验证器,但方式更简洁。

但是每个 PHP 框架都应该有自己的输入清理组件,因此请将 Zend_Form/Zend_Filter_Input 替换为您喜欢使用的框架的适当组件。

【讨论】:

  • 您可以从 Zend 框架中提取 Zend_Filter_Input 并将其用作独立组件 - 或查看我的第二个答案。
【解决方案3】:

我将添加第二个答案,因为这与我针对 Zend 框架的第一个答案无关。

如果您不想使用框架并且您的 PHP >= 5.2.0,您可以使用 ext/filter 扩展,它实际上至少具有框架过滤和验证组件的大部分重要功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-23
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 2011-09-18
    • 2011-09-07
    • 1970-01-01
    • 2011-03-17
    相关资源
    最近更新 更多