HTML和PHP未定义索引


HTML and PHP undefined index

这是代码,它告诉我我有一个未定义的索引,这很奇怪,因为我已经用HTML代码定义了它。有办法解决这个错误吗?或者任何让它变得更好的方法都将不胜感激。。。

<h1>make a username</h1>
<form method="post" action="<?php echo  
htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> 
Username: <input type="text" name="username" value="<?php echo $username; ?>">
<br><br>
<input type="submit" name="submit" value="Submit"> 
</form>
<?php 
$username = $_POST["username"];
echo $username;
?>

$_POST["username"]只有在提交表单后才会被定义。当您第一次加载页面(使用http GET)时,$_POST["username"]将未定义。

表单提交后,它就可以工作了。你应该试试这个:

<?php 
    if(isset($_POST["username"])){
        $username = $_POST["username"];
    }
?>
<h1>make a username</h1>
<form method="post" action="<?php echo  
htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> 
Username: <input type="text" name="username" value="<?php echo (isset($username))? $username: ''; ?>">
<br><br>
<input type="submit" name="submit" value="Submit"> 
</form>
<?php
    echo (isset($username))? $username: '';
?>

对代码进行以下更改:

<h1>make a username</h1>
<form method="post" action="<?php echo  
htmlspecialchars($_SERVER["PHP_SELF"]); ?>"> 
Username: <input type="text" name="username" value="<?php echo $username; ?>">
<br><br>
<input type="submit" name="submit" value="Submit"> 
</form>
<?php 
/// This portion of code will execute only after you hit submit button
if(isset($_POST['username']))
{
$username = $_POST["username"];
echo $username;
}
?>

if ( isset( $_POST["username"] ) ){

$username = $_POST["username"];
} else{
$username = '';
}
echo $username;

尝试使用此代码而不是php代码。这可能会对你有所帮助。

$_POST["username"];在此之前添加一个@,@$_POST['username'],'@'将忽略此错误