Php 空$\u POST变量导致未定义索引

Php 空$\u POST变量导致未定义索引,php,html,Php,Html,我有一个带有表单的login.html页面。表单接收用户名和密码,然后调用home.php页面。php页面将用户名和密码分配给变量 $username = $_POST["username"]; $password = $_POST["password"]; 我还有一个changepassword.html表单页面,它接收oldpassword和newpassword并调用changepassword.php页面 changepassword.php页面将旧密码和新密码分配给变量: $oldp

我有一个带有表单的login.html页面。表单接收用户名和密码,然后调用home.php页面。php页面将用户名和密码分配给变量

$username = $_POST["username"];
$password = $_POST["password"];
我还有一个changepassword.html表单页面,它接收oldpassword和newpassword并调用changepassword.php页面

changepassword.php页面将旧密码和新密码分配给变量:

$oldpassword = $_POST["oldpassword"];
$newpassword = $_POST["newpassword];
在这个页面上,我还有一个返回home.php页面的链接,但当我点击它时,它会给出以下两行错误:

Notice: Undefined index: username in [path] on line 19
Notice: undefined index: password in [path] on line 20
我怀疑这是因为changepassword.html表单没有这些变量,所以它从未保存在$\u POST上

因此,当我从changepassword.php页面而不是login.html页面调用主页时,没有任何可分配给这些变量的内容

我想摆脱那些错误,但不知道怎么做。我原以为当我最初登录时,session_start会保存用户名和密码


我在所有文件的开头都有session\u start,我不知道这是否正确。

有一个简单的三元条件:

$username = isset($_POST["username"]) ? $_POST["username"] : "";
$password = isset($_POST["password"]) ? $_POST["password"] : "";
因此,您需要确保三件事:

方法。它应始终设置为method=post。 元素。它应该有明确的名称,name=username。 必需属性:这确保不发送空数据。 最后,您的代码示例应该具有:

<form method="post" action="">
  <input type="text" name="username" required="required" />
</form>

但不建议这样做。所以要小心使用。

有一个简单的三元条件:

$username = isset($_POST["username"]) ? $_POST["username"] : "";
$password = isset($_POST["password"]) ? $_POST["password"] : "";
因此,您需要确保三件事:

方法。它应始终设置为method=post。 元素。它应该有明确的名称,name=username。 必需属性:这确保不发送空数据。 最后,您的代码示例应该具有:

<form method="post" action="">
  <input type="text" name="username" required="required" />
</form>

但不建议这样做。所以请小心使用。

您肯定有可用的用户名,或者在更改密码时可以从数据库中获取用户名。你有密码。这只是一个将它们提供给目标脚本的问题,目标脚本希望它是一个帖子,因此您需要使用该数据创建一个表单作为隐藏输入。argh,它就像其他帖子一样,在我研究它时隐藏了相同的问题,在我发布它之后,所有问题都会出来:尝试将@sign放在变量之前。比如:@$username注意,如果home.php确实是一个主页,用户可以在很多情况下返回,而不是在登录后返回,那么此时检查用户名和密码不是一个好主意。您应该有另一个脚本来验证用户名/密码,然后设置某种身份验证令牌,并且任何受登录保护的页面都只应检查该令牌。@OzanKurt wow。。。魔术成功了。谢谢你!现在就去查一下,看看它做了什么。当然你有可用的用户名,或者在你更改密码时可以从数据库中获取用户名。你有密码。这只是一个将它们提供给目标脚本的问题,目标脚本希望它是一个帖子,因此您需要使用该数据创建一个表单作为隐藏输入。argh,它就像其他帖子一样,在我研究它时隐藏了相同的问题,在我发布它之后,所有问题都会出来:尝试将@sign放在变量之前。比如:@$username注意,如果home.php确实是一个主页,用户可以在很多情况下返回,而不是在登录后返回,那么此时检查用户名和密码不是一个好主意。您应该有另一个脚本来验证用户名/密码,然后设置某种身份验证令牌,并且任何受登录保护的页面都只应检查该令牌。@OzanKurt wow。。。魔术成功了。谢谢你!我现在要查一下,看看它做了什么。谢谢@PraveenKumar@HoGil不客气。谢谢@PraveenKumar@HoGil不客气。