目前我有以下表格:
<form id="new_account_form" action="php/new-account.php" method="post">
<span>name</span>
</br>
<input type="text" name="main_name" required></input>
<br><br>
<span>email adres</span>
</br>
<input type="text" name="main_email" required value="<?php echo $email; ?>" disabled></input>
<br><br>
<span>user</span>
</br>
<input type="text" name="main_username" required value="<?php echo $username; ?>" disabled></input>
<br><br>
</form>
正如您所看到的,电子邮件输入字段和用户名输入中都包含回显的PHP值。输入字段不为空。
我现在面临的问题是,当我提交表单并尝试$_POST
其他页面中的输入字段时,我不断收到以下错误:
注意:未定义的索引:main_email
注意:未定义的索引:main_username
我是否在错误的地方回应变量?
new-account.php文件包含以下代码:
<?php
//get data from form
$main_name = $_POST['main_name'];
$main_email = $_POST['main_email'];
$main_username = $_POST['main_username'];
echo $main_name;
echo "</br>";
echo $main_email;
echo "</br>";
echo $main_username;
echo "</br>";
?>
答案 0 :(得分:6)
disabled
表格不会发布到操作页面。将disabled
替换为readonly
,您应该没问题。
答案 1 :(得分:3)
原始答案: <击> 您收到这些通知的原因是因为未在表单的输入值中设置变量。 我50%正确,50%错误。
(请参阅下面的编辑)
更改:value="<?php echo $email; ?>"
到
value="<?php $email=!empty($_POST['main_email']) ? $_POST['main_email'] : ''; ?>"
或
value="<?php echo !empty($_POST['main_email']) ? $_POST['main_email'] : ''; ?>"
并为其他输入执行相同操作。
对另一个文件中的其他输入也使用条件!empty()
。
旁注:</input>
是无效的结束标记。 </br>
也无效,应该显示为<br/>
编辑 - 这是一个补充答案:
看到关于disabled
的{{3}}我同意这一点并且他们是对的。
但是, 您将在表单输入中获得未定义的索引通知,因为这些变量尚未设置/定义。
查看您的HTML源代码(启用了错误报告),您将看到类似于以下内容的内容:
<input type="text" name="main_email" required value="<br />
<b>Notice</b>: Undefined variable: email in <b>/path/to/your/file.php</b> on line <b>xxx</b><br />
" disabled></input>
和其他输入的类似通知。
通知将显示在输入中。
即使输入字段被禁用,PHP仍会为变量抛出未定义的通知。
其他编辑
您还可以在提交后获得Notice: Undefined variable: email in...
和用户名。至少,这就是我的测试所揭示的。再次;使用三元运算符作为输入,它将完全解决问题。
目前还不知道为什么要回显输入的值。如果这些是从其他地方填充的(数据库,文件,其他),请删除变量,使用我已经说过的三元运算符,或使用“Email”和“Username”作为默认值。
将http://php.net/manual/en/language.operators.comparison.php添加到文件的顶部,这将指示错误(如果有)。
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// rest of your code
旁注:错误报告应仅在暂存时完成,而不是生产。
答案 2 :(得分:2)
替换:
<input type="text" name="main_email" required value="<?php echo $email; ?>" disabled></input>
用:
<input type="text" name="main_email" required value="<?php echo $email; ?>" readonly></input>
表单的已禁用字段值未发布。因此,始终只使用readonly发布值,并希望值保持不变。
答案 3 :(得分:-1)
if(isset($main_email))
{
echo $main_email;
}
你可以使用isset()函数... http://php.net/manual/en/function.isset.php