php登录脚本中未定义的索引

时间:2011-10-30 20:35:28

标签: php

  

可能重复:
  PHP: “Notice: Undefined variable” and “Notice: Undefined index”

我创建了一个登录脚本。它运行良好,即使我收到错误消息,它也会回应它应该是什么。但是有错误信息。

我的错误消息显示

  

注意:未定义的索引:C中的用户名:第5行的... \ member.php

这是我在member.php上的代码

<?php

session_start();

if ($_SESSION['username'])
echo "Welcome, ".$_SESSION['username']."!<br /><a href='logout.php'>Logout</a>";

else
    die ("You must be logged in");
?>

代码很多,所以我不知道这个问题是什么。我将登录脚本粘贴到,如果问题可能存在?

<?php

session_start();

$username = $_POST['username'];
$password = $_POST['password'];

if ($username&&$password)
{

$connect = mysql_connect("localhost", "root", "") or die("Couldt connect!");
mysql_select_db("guestbook") or die ("couldt find db");

$query = mysql_query("SELECT * FROM users WHERE username='$username'");

$numrows = mysql_num_rows($query);

if ($numrows!=0)
{
//Code to loging

while ($row = mysql_fetch_assoc($query))
{

$dbusername = $row['username'];
$dbpassword = $row['password'];

}

//Check to se if they match!

if($username==$dbusername&&$password==$dbpassword)
{
echo "You're logged in! You'll be redirected to members page in 3 sec";
$_SESSION['username']=$dbusername;
header( 'refresh: 3; member.php' );
}
else 
echo "Incorrect password!";

}
else
die("Thats user dont exist");

}

else
die ("Please enter username and password");
?>

3 个答案:

答案 0 :(得分:6)

$ _ SESSION ['username']是未设置的未定义索引。您应该使用isset()来检查是否设置了变量。变化:

if ($_SESSION['username'])

为:

if ( isset($_SESSION['username']) )

答案 1 :(得分:1)

if($_SESSION['username'])替换为if(isset($_SESSION['username']))

如果未设置变量,则第一个将生成通知(这正是您正在检查的内容)。

仅使用第一个来检查变量是否已定义但不是“falsey”(例如0或空字符串)。

如果要同时检查(已定义且非假),可以使用:

if(isset($_SESSION['username']) && $_SESSION['username'])

答案 2 :(得分:0)

你应该使用if(!empty($ _ SESSION ['username']))。 empty()不仅检查变量/ key是否存在,还检查它是否为false或null。你只想在变量包含一个值时做某事,所以检查以确保变量不是空的()就可以满足你的需要。