Php未定义索引


Php Undefined index?

好的,所以当用户注销并试图返回到成员页面时,它会显示您必须登录才能很好地查看此页面,echo会显示他们必须登录并将他们拒之门外,但出现了错误。这是页面。上面说5号线有问题。

会员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();
if (isset($_SESSION['username']))
echo "Welcome, ".$_SESSION['username']."!<br /><a href='logout.php'>Logout</a>";
else
die("You must be logged in!");
?>

改进if子句的值检查。我喜欢做array_key_exists!empty(trim()),以确保设置值:

session_start();
if (array_key_exists('username', $_SESSION)) && !empty(trim($_SESSION['username']))) {
    echo "Welcome, " . $_SESSION['username'] . "!<br /><a href='logout.php'>Logout</a>";
}
else {
    die("You must be logged in!");
}

为了避免未定义索引错误,您可以使用isset()检查:

session_start();
if (isset($_SESSION['username']) && trim($_SESSION['username']) != '') {
    echo 'Welcome, ' . $_SESSION['username'] . '!<br /><a href="logout.php">Logout</a>';
} else {
    die("You must be logged in!");
}

附带说明:假设这些行是文件的前几行,如果您打印没有HTML头和正文的HTML代码,则页面是不完整的&浏览器可能会抱怨HTML结构。建议屏幕上的每个页面都至少有最小的HTML结构。