0

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

这就是问题所在,一旦您发送了推荐,您可以再次发送,这次是通过刷新同一页面!

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

编辑:谢谢你们的回答,有没有什么脚本可以用来在mysql的帮助下存储/验证IP?还是只是一个“纯文本数据库”?

4

2 回答 2

0

您可能会遇到两种不同的情况:

当您进入表单时,会记住之前输入的信息这一事实。这通常是网络浏览器(和/或安装的插件)的功能,而不是您的脚本/表单的问题。这与您的浏览器可能为您记住登录凭据的功能类似。

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

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

然后变成

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

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

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

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

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

于 2013-11-04T11:48:31.580 回答
0

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

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

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

为了更加彻底,请防止给定收件人每天被告知超过一次页面或其他内容。

于 2013-11-04T11:42:09.540 回答