PHP在提交表单失败后保留表单信息

问题描述:

你好 我在mvc系统视图中构建表单,并且希望在表单提交失败的情况下保留所有插入的值。 如何才能做到这一点:我试着像(例如一个字段):PHP在提交表单失败后保留表单信息

 <label for="user_firstname">Nume</label> 
    <input id="user_firstname" type="text" name="user_firstname" value=<?= $_POST['user_firstmane'] ?> > 
    <? if (isset($errors['user_firstname'])): ?> 
    <span class="error"><?= $errors['user_firstname']; ?></span> 
<? endif; ?> 

但当然,它不工作的第一次(当没有动作后完成)。

要做到这一点,最简单的方法是什么?有任何想法吗?

谢谢

+1

这是什么意思? “但当然,它不会第一次运作”....第一次向用户显示表格时,由于他尚未提交任何内容,因此该值不能存在。或者是有一些PHP错误? – 2011-06-03 10:11:49

+0

1)你为什么说'它第一次不起作用?' 2)你拼错$ _POST ['user_firstmane'],当然应该是$ _POST ['user_firstname'] 3)(小OT)在我看来,更多的“MVC”你不应该直接使用$ _POST变量但是从“控制器”(例如,具有“firstName”属性的“用户”对象)取得的值将是更好的选择。 – ArtoAle 2011-06-03 10:23:31

我建议是这样的:

<label for="user_firstname">Nume</label> 
    <input id="user_firstname" type="text" name="user_firstname" value=<?(isset($_POST['user_firstname']) ? $_POST['user_firstname'] : ""; ?>> 
    <? if (isset($errors['user_firstname'])): ?> 
    <span class="error"><?= $errors['user_firstname']; ?></span> 
<? endif; ?> 

你也有一个错字的$ _ POST [ “user_firstmane”]应该是$ _ POST [ “user_firstname”]: )

+1

值得注意的是,为了实现这个功能,当提交**失败时,你不能执行POST/Redirect/GET模式。 – 2014-04-28 18:59:23

value="<?php echo isset($_POST['user_firstname'])? $_POST['user_firstname'] : "" ?>" 
+0

你是否应该将“”更改为“”? – 2013-11-18 21:45:07

你的意思是你想保持表单的值,当它没有提交?您可以使用$ _SESSION将值存储在检查页面中。例如:

check.php

<?php 
    session_start(); 
    if (strlen($_POST['user_firstname']) < 5) { //for example 
     $_SESSION['user_firstname'] = $_POST['user_firstname']; 
    } 
?> 

在当前的形式。改变value=<?= $_POST['user_firstmane'] ?>value="<?=$_SESSION['user_firstname']?>",所以:

<label for="user_firstname">Nume</label> 
    <input id="user_firstname" type="text" name="user_firstname" value="<?=$_SESSION['user_firstname']?>" /> 
    <? if (isset($errors['user_firstname'])): ?> 
    <span class="error"><?= $errors['user_firstname']; ?></span> 
<? endif; ?> 

只是遍历JavaScript中的DOM,并把PHP $ _ POST数据到input.value

<script type='text/javascript'> 

<?php 
    echo "var jsArray = new Array();"; 
    foreach ($_POST as $key=>$value){ 
     echo "jsArray['$key'] = '$value';"; //turn it into a javascript array 
    } 
?> 


     // Grab all elements that have tagname input 
     var inputArr = document.getElementsByTagName("input"); 

     // Loop through those elements and fill in data 
     for (var i = 0; i < inputArr.length; i++){ 
      inputArr[i].value = jsArray[inputArr[i].name]; 

     } 

</script> 

<input id="FirstName" name="FirstName" placeholder="First name" title="First Name" required="" tabindex="1" type="text" value="<?php if(isset($_POST['FirstName'])){ echo htmlentities($_POST['FirstName']);}?>"/> 

此代码是为了更容易提交表单失败后保留表单信息。