可能重复:
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");
?>
答案 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。你只想在变量包含一个值时做某事,所以检查以确保变量不是空的()就可以满足你的需要。