PHP在验证错误后保留输入的值

PHP在验证错误后保留输入的值,php,validation,error-handling,Php,Validation,Error Handling,我有一个需要验证的简单表单 我使用empty()函数实现了这一点。如果验证未通过,将向用户发出警报。创建此警报后,所有输入的值都将消失 我想保留它们 这就是我所做的: <form id="" name="" action="<?php echo get_permalink(); ?>" method="post"> <table> <tr> <td> Nam

我有一个需要验证的简单表单
我使用
empty()
函数实现了这一点。如果验证未通过,将向用户发出警报。创建此警报后,所有输入的值都将消失

我想保留它们

这就是我所做的:

<form id="" name="" action="<?php echo get_permalink(); ?>" method="post">
    <table>
        <tr>
            <td>
                Name:<input type="text" id="name" name="name">
            </td>
        </tr>
        <tr>
            <td>
                <input class="submit-button" type="submit" value="Send" name="submit">
            </td>
        </tr>
    </table>
</form>
<?php
    if($_POST["submit"]){
        if (!empty ($_POST["name"])){
          // do something
        }else{
            ?>
            <script type="text/javascript">
                alert('U heeft niet alle velden ingevuld. Graag een volledig ingevuld formulier versturen');
            </script>
            <?php
        }
?>  

将输入的值作为默认值传递给输入:

<input type="text" id="name" name="name" value="<?php echo isset($_POST["name"]) ? $_POST["name"] : ''; ?>">

对于每个输入字段,最简单的方法是:

<input type="text" id="name" name="name" value="<?= isset($_POST['name']) ? $_POST['name'] : ''; ?>">

奇怪的是,我碰巧正在做一件类似的事情,并且一直在使用以下内容来确保表单数据在提交表单后可用。它使用会话变量来存储POST结果,并用作表单字段中的值

/* Store form values in session var */
if( $_SERVER['REQUEST_METHOD']=='POST' ){
    foreach( $_POST as $field => $value ) $_SESSION[ 'formfields' ][ $field ]=$value;
}

/* Function used in html - provides previous value or empty string */
function fieldvalue( $field=false ){
        return ( $field && !empty( $field ) && isset( $_SESSION[ 'formfields' ] ) && array_key_exists( $field, $_SESSION[ 'formfields' ] ) ) ? $_SESSION[ 'formfields' ][ $field ] : '';
}

/* example */
echo "<input type='text' id='username' name='username' value='".fieldvalue('username')."' />";
/*在会话变量中存储表单值*/
如果($\u服务器['REQUEST\u METHOD']='POST'){
foreach($\发布为$field=>$value)$\会话['formfields'][$field]=$value;
}
/*html中使用的函数-提供以前的值或空字符串*/
函数fieldvalue($field=false){
return($field&&!empty($field)&&isset($\u SESSION['formfields'])和&array_key_存在($field,$\u SESSION['formfields'])?$\u SESSION['formfield][$field]:'';
}
/*范例*/
回声“;

我尝试了最后一个选项,但由于某种原因,它在我这边不起作用。也许我做错了,但我只是在我的联系人表单的html文件中添加了上面的一行。

是的,就是这样。我理解。。Thnx!您还应该在输出值之前清理$u POST,以防止注入错误代码。即