$ _Post问题

时间:2010-11-01 01:44:37

标签: php

  

可能重复:
  what is this notice referring to

我能用简单的英语得到答案吗? 我是新来的......解释得越好,我需要重新发布的次数越少

Notice: Undefined index: username in C:\wamp\www\espn.com\login.php on line 16

Notice: Undefined index: password in C:\wamp\www\espn.com\login.php on line 17

1<?php
2
3//Database Information
4
5 $dbhost = "localhost";
6 $dbname = "users";
7 $dbuser = "root";
8 $dbpass = "*****";
9
10 //Connect to database
11
12 mysql_connect ( $dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error());
13 mysql_select_db($dbname) or die(mysql_error());
14
15 session_start();
****16 $username = $_POST['username'];
17 $password = md5($_POST['password']);****
18
19 $query = sprintf('SELECT * FROM users WHERE username="%s" AND password="%s"',
20    ($username), ($password));
21
22 $result = mysql_query($query);
23
if (mysql_num_rows($result) != 0) {
$error = "Bad Login";
    include "login.html";

} else {
    $_SESSION['username'] = "$username" ;
    include "memberspage.php";
}

2 个答案:

答案 0 :(得分:2)

不确定。提交的表单没有任何名称标签。 请修改您的html部分如下:

<input **name="username"**/>

这样您就可以轻松使用$ _POST ['username']从表单中恢复值。 实际上,每次看到“未定义的索引”时,都意味着缺少数组的键。 就像:

$a = array('zero', 'one', 'two');

你打电话:

$a[3];

在这种情况下,$ _POST是一个缺少键'username'和'password'的全局数组。

答案 1 :(得分:0)

提交页面时,数据(用户输入/表格dat a)将作为数组发送,您可以通过$_POST访问该数组。

现在,当您访问$_POST[somename]时,PHP引擎会尝试检索数组$_POST中键“somename”的值。

在你的程序中(特别是第16行和第17行),数组的键不存在。

所以,你最好做这样的检查:

$username = isset($_POST['username'])?$_POST['username']:null;