1

我似乎无法弄清楚为什么当我提交表单并返回错误消息时,它没有保留我在字段中输入的内容。这是我的输入字段的示例:

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

我正在使用会话来处理错误消息。但我不认为这会有所作为,对吧?有任何想法吗?

我的表格的一部分:

<form action="process.php" method="post" name="edit" id="edit">
<input type="text" value="<?php if (isset($_POST['name']))  echo htmlentities($_POST['name']);  ?>" name="name" id="name" class="text" tabindex="1"/>
<input type="text" value="<?php if (isset($_POST['the_field'])) echo $_POST['the_field'];?>" name="the_field" id="the_field"/>
<input type="hidden" value="Create" name="action"/>
<input type="submit" class="btn" value="Create New Project" />
</form>

我的 PROCESS.PHP 的一部分:

if(isset($_POST)){
    switch($_POST['action']){   
        case 'Create':
        $client = $_POST['client'];
            if(empty($_POST['name'])){
              $_SESSION['error'] = 'You need to enter a project name!';
              header('location: add.php');
              exit; 
            }
    }
break;
}

您是否认为这是因为在 THE_FIELD 之前处理了 NAME 字段,并且当 NAME 出错时,它没有返回任何内容?

4

2 回答 2

0

没关系isset,要显示您发送的内容,post您必须这样写$_POST['the_field']

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

更新

不要sessions用于这类事情。

if (isset(whatever))
// this 
else
// other

在任何情况下,您都使用值重新填充输入post

<input type="text" value="<?php echo htmlspecialchars($_POST['the_field']);?>"

我的意思是你必须post在输出 html 之前处理所有的东西。例如:

if (isset(whatever))
// echo "you posted whatever, great!"
else
// post "value missing, please try again"
<input type="text" value="<?php echo htmlspecialchars($_POST['the_field']);?>"

sessions适合存储永久数据(当然是会话中的永久数据)要警告users无效输入,您必须在post操作后立即通知他们。无需将信息保存在sessions数据中。

总之,执行此操作的正常方法是:

<?php
if (input data is valid)
    echo 'valid'
else
    echo 'invalid'
?>
<input value="<?php echo htmlspecialchars($_POST['the_field']); ?>">
于 2013-01-21T02:50:12.273 回答
0

自从我发布到流程页面后,我最终不得不使用会话,这似乎是原因,而不是 SELF。需要更多时间,但可以满足我的需要。

于 2013-01-23T20:25:50.650 回答