Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP在表单验证后将表单数据放回表单中_Php_Html_Forms - Fatal编程技术网

PHP在表单验证后将表单数据放回表单中

PHP在表单验证后将表单数据放回表单中,php,html,forms,Php,Html,Forms,我有一个联系人表单,它的动作是contact.phpContact.php具有所有表单验证

我有一个联系人表单,它的动作是
contact.php
Contact.php
具有所有表单验证具有以下格式。当我点击表单上的send,其中一个输入标签无效时,它会将我发回,并告诉我哪些输入标签填写错误。问题是所有其他正确的输入值现在都为空。有没有办法使用
$\u GET
保存输入标记的原始值而不使用out?我会使用
$\u GET
,但我有一个消息文本区域,最多可以包含1000个字符。我不希望URL中包含1000个字符。

为什么要在不包含表单的文件的函数中进行验证?您的验证应该在
index.php
中进行,然后您可以使用
$\u POST
。如果全部通过,则将用户重定向到下一页

<input type="text" name="my_input" value="<?=isset($_POST['my_input']) ? $_POST['my_input'] : NULL?>
single-page.php

<?php

if ($_POST['action'] === 'doit') {
    // Validation and other logic
    // Send email using $_POST['email'] etc.
}

?>

<form>
<input type="text" name="email" value="<?php echo $_POST['email'] ?>" />
<input type="hidden" name="action" value="doit" />
<input type="submit" value="Contact" />
</form>


您可以使用会话变量,因此在
contact.php
中可以设置例如
$\u session['form\u data']=$\u POST
,然后可以从
index.php
访问它


或者,您可以使用jQuery验证器在提交表单之前验证文本

由于在两个文件之间来回移动,它需要使用查询字符串重定向,将这些变量传递回表单。如果您将逻辑和HTML放在同一个文件中,那么在验证完成后,您只需在页面下一步重用$\u POST变量即可。不在同一个文件中。。。contact.php vrs index.phpI了解您的意思,但是如果验证失败,任何类型的重定向都应该被终止。用户应该停留在表单页面上,并在发送到其他页面之前,被迫修复他们需要修复的任何内容。所以他应该把验证移到
index.php
。。。或者将所有内容移动到contact.php,“转到联系人到联系人,保持联系直到联系”。我试图在另一个页面上进行验证以使文件更易于阅读,但这是最好的选择。这最直接地回答了问题。尽管实际上并不需要所有这些数据的传递。