PHP表单会记住以前的信息

时间:2013-11-04 10:04:49

标签: php

我有一个使用邮件功能的PHP表单脚本。基本上你写了你的电子邮件和想要在页面上发送推荐的电子邮件,然后点击发送。

问题在于,一旦您发送了推荐信息,您可以再次发送,这次刷新同一页面!

如何让脚本不记得同一用户之前输入的信息? flush()或其他东西。脚本放在页面的中间,所以我不希望页面在这个php表单后停止执行。

编辑: 谢谢你们的回答,是否有任何脚本,所以我可以使用mysql帮助存储/验证IP?或者只是一个“纯文本数据库”?

2 个答案:

答案 0 :(得分:0)

这是导致此行为的Web浏览器,而不是表单 - 当您刷新表单提交结果的页面时,大多数浏览器都会提供重新提交数据。

通常的“修复”是将数据提交到中间页面,然后将人员重定向回他们正在查看的页面 - 这样他们就必须返回一个页面以及刷新并单击“是,我想重新提交数据“。

为了完整性,请考虑仅允许特定的ip通过跟踪IP在数据库中的最后一次使用,每x秒/分钟使用一次“发送给朋友”功能。

为了更加彻底,防止给定的收件人每天多次被告知某个页面,或者某事。

答案 1 :(得分:0)

您可能会遇到两件不同的事情:

当您转到表单时,先前输入的信息将被重新编号。这通常是webbrowser(和/或安装的插件)的功能,而不是您的脚本/表单的问题。这与您的浏览器如何为您记住登录凭据的功能类似。

通常这不是什么大问题,但您可以通过在每次加载表单时为输入字段生成唯一名称来防止这种情况发生。

<input type=text name=email lenght=40>...

然后变成

<inut type=hidden uniqueID=$something>
<input type=text name=email-$something lenght=40>...

然后在处理表单时使用表单处理器中的uniqueID重建所有其他字段名称。

您的第二个问题就是您的表单处理器允许相同的内容处理两次或更多次。常见修复的常见问题。

传统的策略是在处理表单内容后将浏览器重定向到成功/错误页面,可以重新加载而不会受到任何惩罚。形式 - &gt; formhandler页面(PHP)处理表单内容并发送http重定向 - &gt;成功/错误页面。

或者现在更常见的是,存储表单的上述唯一ID(例如,在数据库中)并拒绝第二次处理。