3

来自一些传统的(如果生疏的)编程背景,我正忙于掌握网站的“无状态”性质。这是一个相当大的思维转变!

我为我工作的团队创建了一个小型网站,用于在内部跟踪我们日常工作的某些方面。该网站功能齐全,我为我设法提出的内容感到非常自豪,bla bla bla。

但是,我在某处读到了一些东西,表明我可能做得不好。特别是,团队网站的中心页面完成了大部分工作。它检查您来自哪里,然后“切换”以执行一些工作(在数据库中进行一些更改),然后再次呈现页面。

在许多情况下,页面只是调用自己!我要做的是展示一张桌子。每行的最后一列是一组 html 表单。每个表单都有一个提交按钮,至少有一个隐藏字段。“提交”按钮具有名称/值,例如“删除”“修改”“存档”等。

如果$_POST['submit'] == "delete"然后我在由隐藏字段标识的行上执行该功能。对“存档”的访问。对于修改,我打开一个新页面,显示一个带有默认值的表单,当用户提交表单时,再次调用 PHP 主页面在显示表格之前执行 SQL 更新。

因此,基本上在主页开始附近的一个大型(并且不断增长的)案例结构完成了大部分工作,甚至包括登录按钮!

这样看起来很整洁和有条理,但我有两个问题:

  1. 当用户按下返回时,有没有办法消除“重新发送表单数据”提示?大多数时候,后退按钮在这个网站上没有多大意义,但我们在这里与人打交道。我注意到其他人发布了关于注销按钮等类似问题,但到目前为止我找到的答案对我来说意义不大或毫无意义。

  2. 这是不好的编程实践,尤其是整个 PHP-calls-itself-from-a-form-action 概念....?

谢谢你的时间!

4

4 回答 4

4

对于您的问题:

  1. 您正在寻找 Post-redirect-get 之类的东西,这意味着在提交后您使用您的数据“完成工作”并在之后立即重定向您的用户,因此点击后退按钮不会重新提交!

  2. 一般来说,这就是它的工作原理......在一开始。过了一会儿,您应该看看 OOP(面向对象编程),或者对于初学者来说,只需将每个操作分成函数,甚至可以将这些函数分成单独的文件。查看 PHP 手册以了解函数,或者如果您真的很想了解更多信息,OOP将是圣杯,但这有点“复杂”;)

于 2011-09-27T11:15:51.497 回答
2

Post-redirect-get是一种非常干净地解决这个问题的模式。

于 2011-09-27T11:10:11.597 回答
1

你开发的不是网站,更像是一个网络应用程序。为了消除“后退按钮问题”,您应该考虑使用一些 JavaScript 魔法(例如 Ajax 可以帮助您消除打开另一个页面或提交到同一页面的需要,jQuery 可以帮助显示和隐藏部分页面哦基于用户交互)。

对于第二个问题:将所有逻辑放在一个 php 文件中并没有错。当然,如果你有数以亿计的代码行,但对于一个小型应用程序,这可能会造成伤害……为什么不呢?!

一般来说,建议将逻辑和GUI分开。你可以在这里阅读。

于 2011-09-27T11:19:16.093 回答
1

redirect处理完表单数据后的页面总是一个明智的想法。它避免了在页面刷新或返回按钮上重新发送表单。

对于 php 中的重定向,您可以使用:

header("Location: {url here without brackers}");
于 2011-09-27T11:25:59.183 回答