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


PHP keep form info after submit form failed

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

     <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; ?> 

但当然,第一次(当没有做任何后期操作时)它不会起作用。

最简单的方法是什么?有什么想法吗?

感谢

只需在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>

我建议这样做:

<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"]中也有一个拼写错误,应该是$_POSD["user_filirstname"]:)

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

您的意思是,当表单提交失败时,您想保留它的值吗?您可以使用$_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; ?> 
<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']);}?>"/>

提交表单失败后,此代码更容易保存表单信息。