Php 表单字段不保留输入数据

Php 表单字段不保留输入数据,php,forms,input,field,isset,Php,Forms,Input,Field,Isset,我似乎不明白为什么当我提交表单时,它返回错误消息,它没有保留我在字段中输入的内容。以下是我的输入字段示例: <input type="text" value="<?php if (isset($_POST['the_field'])) echo $_POST['the_field'];?>" name="the_field" id="the_field"/> 你认为这是因为名称字段是在\u字段之前处理的,当名称出现错误时,它不会返回任何内容吗?如果设置了isset,则无

我似乎不明白为什么当我提交表单时,它返回错误消息,它没有保留我在字段中输入的内容。以下是我的输入字段示例:

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

你认为这是因为名称字段是在\u字段之前处理的,当名称出现错误时,它不会返回任何内容吗?

如果设置了
isset
,则无所谓,要显示
post
发送的内容,你必须这样编写
$\u post['the\u field']

<input type="text" value="<?php echo htmlspecialchars($_POST['the_field']);?>" name="the_field" id="the_field"/>
在任何情况下,都可以使用
post
值重新填充输入:

<input type="text" value="<?php echo htmlspecialchars($_POST['the_field']);?>"
会话
适用于存储永久数据(当然是会话中的永久数据),以警告
用户
输入无效,您必须在
发布
操作后立即通知他们。无需在
会话
数据中保存信息

总之,通常的做法是:

<?php
if (input data is valid)
    echo 'valid'
else
    echo 'invalid'
?>
<input value="<?php echo htmlspecialchars($_POST['the_field']); ?>">


最后我不得不使用会话,因为我正在发布一个流程页面,这似乎是原因,而不是自我。需要更多的时间,但做了我需要的。

您是否确保您的方法为'post',并且您可能希望执行print\r($\u post);检查post数据。当这不起作用时,我只能想到两个原因。1.提交表格的方法不同。2.在某处中间有一个重定向。采取form.html->formHandler.php->form.html路径。由于会话,错误消息将被保留,但值将丢失。因此,为什么不发布文件名和完整的表单,以便我们可以帮助您检查视图源代码,以检查输出的内容,例如:错误/php标记等。在问题中添加完整的表单结构,其中是
isset()
echo
?是的,使用
isset()
因为可以通过GET访问页面,并且变量不可用,所以在输出变量之前,您应该检查变量是否存在。这就是糟糕的编码。@在
输入
HTMl中进行神秘测试
isset
不是一个好的做法,是吗?我只想说是OP想看看什么是
post
“这是正确的方法。我说的对不对?神秘的是,在这种情况下,isset并不是一个拦截器。问题在别处。既然op使用的是isset,我不认为nomikOs的答案是一个大问题。说实话,我不认为htmlspecialchars是这里的问题。即使有一些特殊字符提前关闭字段,op也会在输出中看到一些差异。像一些额外的文本或其他东西,如果OP想要验证POST中的可用内容,他们可以执行
var\u dump($\u POST)
进行调试,但不管如何,在使用$_POST['the_field']执行某些操作之前检查它是否存在都是最佳做法,因为该变量并不总是存在。我没有说isset是OP的问题,但是你不应该在回答中删除它,因为你暗示它是不需要的。
if (isset(whatever))
// this 
else
// other
<input type="text" value="<?php echo htmlspecialchars($_POST['the_field']);?>"
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']);?>"
<?php
if (input data is valid)
    echo 'valid'
else
    echo 'invalid'
?>
<input value="<?php echo htmlspecialchars($_POST['the_field']); ?>">