4
4

3 回答 3

8

未定义的索引意味着在 $_POST 数组中的某处,键username没有索引(键) 。

您应该将发布的值设置为变量以获得更干净的解决方案,这是一个好习惯。

如果我遇到类似的错误,我会这样做:

$username = $_POST['username']; // you should really do some more logic to see if it's set first
echo $username;

如果用户名没有出现,那意味着我在某个地方搞砸了。你也可以,

var_dump($_POST);

查看您发布的内容。就调试而言,var_dump 非常有用。看看:var_dump

于 2013-01-02T01:33:13.373 回答
3

首先,

确保有帖子

if(isset($_POST['username'])) { 
    // check if the username has been set
}

其次,也是最重要的,清理数据,这意味着

$query = "SELECT password FROM users WHERE username='".$_POST['username']."'";

是致命的危险,而是使用

$query = "SELECT password FROM users WHERE username='".mysql_real_escape_string($_POST['username'])."'";

请研究主题sql注入

于 2013-01-02T01:28:44.197 回答
2

您应该检查是否POST['username']已定义。在上面使用这个:

$username = "";

if(isset($_POST['username'])){
    $username = $_POST['username'];
}

"SELECT password FROM users WHERE username='".$username."'"
于 2013-01-02T01:26:51.073 回答