我有一个PHP表单,其中包含一些下拉选项和文本字段条目。如果用户从下拉列表中选择了错误的项目,那么当他们提交表单时,我会让它向用户显示错误消息并强制浏览器返回上一页。问题是用户必须重新输入所有信息。
如何在表单提交成功之前使表单保存数据?
编辑:
表单提交方法为$_POST
,表单正在提交给另一页。
这必须使用严格的PHP来完成,因为Javascript / Jquery解决方案可以被更安全的用户阻止。
答案 0 :(得分:1)
表单是POST还是GET?无论哪种方式,您都可以访问PHP变量$ _POST或$ _GET中的所有提交字段。在HTML中,您可以将这些值(如果已设置)传递给每个HTML输入元素的默认值。这样,如果是第一次,它们将为空白,如果出现错误,则值将重新填充。
答案 1 :(得分:1)
如果他们是选择值,你可以这样做:
<select name="my_select" id="my_select">
<option value="123"<?php if($_REQUEST['my_select'] == 123) echo ' selected="selected"; ?>>123</option>
</select>
如果您有常规文字输入,则只需将$_REQUEST
变量应用于value
属性:
<input type="text" name="my_text" value="<?php echo $_REQUEST['my_text'] ?>" />
答案 2 :(得分:1)
我建议阻止页面从提交中导航,直到数据得到验证。输入jQuery:)
<script type="text/javascript" src="jquery-library.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// Wait for the user to click on your button
$('#submit_button').click(function(){
// Check each form field for an appropriate value
if ($('#form_field1').val() != 'something I expect')
{
alert('Wrong submission!');
return false;
}
// Forward the user to some url location
window.location = 'url';
return false;
});
});
</script>
答案 3 :(得分:1)
你走了。这将有效,并且不依赖于Javascript:
form.php //表单页面
<?php session_start(); ?>
<form method="post" action="action.php">
<input type="text" id="input1" value="<?php echo (isset($_SESSION['fields']) ? $_SESSION['fields']['input1'] : '') ?>" />
<input type="text" id="input2" value="<?php echo (isset($_SESSION['fields']) ? $_SESSION['fields']['input2'] : '') ?>" />
</form>
action.php //操作页面
<?php
session_start();
//do your validation here. If validation fails:
$_SESSION['fields']['input1'] = $_POST['input1'];
$_SESSION['fields']['input2'] = $_POST['input2'];
//redirect back to form.php
?>