【问题标题】:If captcha is wrong, keeping the fields filled out (PHP or JavaScript?)如果验证码错误,请填写字段(PHP 还是 JavaScript?)
【发布时间】:2015-11-10 13:25:28
【问题描述】:

我制作了一个包含很多字段的表单。我的旧验证码已经过时,所以我不得不使用新的验证码(我选择谷歌的 reCaptcha)。使用旧的验证码,如果人们填写错误,那么他们可以点击“返回”或此链接(我放在处理数据.php 页面上):

<a href=\"javascript:history.go(-1)\">go back and try again</a>

...然后他们在字段中的所有答案仍然存在。但是在我将其更改为 Google 的 reCaptcha 之后,如果人们忘记点击“我不是机器人”-勾选框并提交表单; - 然后如果他们回去,那么所有的领域都是空的。

那么我该如何解决这个问题?

我正在考虑将 $_POST 数组传递给 $_SESSION 变量。因此,如果他们点击返回,那么 HTML 字段将看起来像这样:

<input type="text" name="foobar" placeholder="foobar" 
   value="<?php echo $_SESSION['foobar']; ?>" />

但这真的是这样做的方法吗?我不能成为第一个偶然发现这一点的人。 :-/

【问题讨论】:

  • 你为什么不向那个复选框添加验证?以免人们忘记它。
  • @Akshay Google 的 reCaptcha 作为 iframe 插入/嵌入。我假设您谈论的是 javascript 错误,如果未单击复选框,则会弹出,这是一个好主意。我不知道这是否可能,因为它是一个 iframe。是吗?

标签: php html forms


【解决方案1】:

在处理$_POST 数据时:

session_start();
$_SESSION["postvars"] = $_POST;

然后在表单页面上:

session_start();
<input type="text" 
    name="foobar" 
    placeholder="foobar" 
    value="<?php echo (isset($_SESSION["postvars"]) ? $_POST["postvars"]["foobar"] : ""); ?>>

对于下拉菜单:

<select name="barfoo">
    <option value="foo" <?php echo (isset($_SESSION["postvars"]) ? ($_SESSION["postvars"]["barfoo"]=="foo" ? "selected" : "") : "" ); ?>
    <option value="bar" <?php echo (isset($_SESSION["postvars"]) ? ($_SESSION["postvars"]["barfoo"]=="bar" ? "selected" : "") : "" ); ?>
    <option value="example" <?php echo (isset($_SESSION["postvars"]) ? ($_SESSION["postvars"]["barfoo"]=="example" ? "selected" : "") : "" ); ?>
</select>

【讨论】:

  • 很好...那你会怎么做下拉字段呢?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-04
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多