我制作了一个包含许多字段的表单。我的旧captcha过时了,所以我不得不用一个新的(我选择谷歌的reCaptcha)。使用旧的captcha,如果人们填错了,他们可以点击"返回"或这个链接(我放在handlingdata.php页面上):
<a href="javascript:history.go(-1)">go back and try again</a>
然后他们在田野里的所有答案都会在那里。但在我把它改成谷歌的reCaptcha后,如果人们忘记点击"我不是机器人"-勾选框并提交表格;-如果它们返回,那么所有字段都是空的。
那么我该如何解决这个问题呢?
我正在考虑将$_POST-array传递给$_SESSION-variable。因此,如果他们点击返回,那么HTML字段将看起来像这样:
<input type="text" name="foobar" placeholder="foobar"
value="<?php echo $_SESSION['foobar']; ?>" />
但这真的是办法吗?我不是第一个偶然发现这个的人
处理$_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>