PHP表单设计决策:责任分离

问题描述

| 所有。 我一直在考虑PHP表单的设计决策,我希望从比我聪明的人那里得到一些建议。 这里是基础知识:我有一个用户输入表单,使人们可以为学校注册一章。我正在表单字段上进行输入验证,这使我a)清理数据并b)验证输入。然后,我打算向注册用户发送电子邮件(因为他们的电子邮件地址将以表格的形式提交)并将其信息写入MysqL数据库。 现在,我已经通过POST设置了数据验证部分(以及必要的错误消息),并且该页面正在发回到自身进行验证。在我看来,这很合逻辑,因为我可以轻松保留经过清理的用户输入和显示错误(对于必填字段,数据类型等)。如果所有必填字段均已填写且数据有效,那么我想将用户重定向到包含其他信息的“谢谢”页面。 (对不起,我太冗长了。我需要解决这个问题。) 问题是,如果可能的话,我想将验证逻辑和数据库写/电子邮件逻辑完全分开。我最初的想法是,如果所有字段都有效,则重定向到“谢谢”页面,但是现在,我认为“谢谢”页面实际上应该包含写入数据库,发送电子邮件然后打印“谢谢”的逻辑。信息。但是,这会使事情复杂化,并且需要在不使用GET的情况下将POST数据传递到另一个页面。尽管我以前从未做过这样的事情(我对PHP还是很陌生的),但这显然是有可能的(请参见此处,此处和此处),并且有多种方法可以实现此目的。 但是,问题是-我什至应该尝试在单独的PHP页面中分离此逻辑吗?每个编程的本能都告诉我“是的,是的,这是责任的逻辑分离”。...但这是PHP中表单处理的最佳实践吗?任何具有更多PHP经验的人都可以详细说明这样做的利弊以及他们的经验吗?你会怎么做?     

解决方法

        您所指的(如果您还不知道的话)是MVC模式设计的基础。在这种情况下,我可能会更进一步,将数据库和电子邮件逻辑与“谢谢”页面分开。您可以在模型中执行这些操作,并在成功后从Controller重定向到正确的视图。 要花一点时间来适应这个概念,因此,如果一开始很难理解,我建议从强制MVC文件分离的PHP框架开始,例如Codeigniter或CakePHP。这可以帮助您考虑代码所属的位置。 查阅本文档,以获取有关PHP中MVC模式的出色入门,并了解其优缺点。     ,        您无需分开页面即可分开逻辑。您可以轻松地在其他文件中编写函数和操作,然后将其导入。在原始的somthing.php中有一个db.php和一个somthingelse.php并使用import来使用其功能(或类,如果您(例如您,我是一个OOP类))...正如我所看到的,在之间传递敏感信息页面是有问题的,因为聪明的用户可以自己更改页面。 当您使用\“ GET \”时,您需要准备好让用户弄乱值而没有任何恶意的意图,某些内容可能会被删除,或者他们将链接发送给朋友,或者可能发生了其他情况。 无论如何,请始终记住,每次在页面之间发送信息时都需要重新验证信息。 编辑:我需要澄清,我指的是先验证,然后通过GET或POST将信息盲目传递给数据库逻辑...     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...