未定义索引:用户注销时的用户名错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了未定义索引:用户注销时的用户名错误相关的知识,希望对你有一定的参考价值。
这是我的index.php代码的一部分,它打印当前用户登录$ SESSION。但是当用户单击logout时,它会在第x行上显示一条错误消息“Undefined index:username”。这是什么意思,我该如何解决?
<?php
$dbname = 'lw17894'; # Change to your username
$dbuser = 'lw17894';
$dbpass = 'obscure';
$dbhost = 'localhost';
$link = mysqli_connect( $dbhost, $dbuser, $dbpass )
or die( "Unable to Connect to '$dbhost'" );
mysqli_select_db( $link, $dbname )
or die("Could not open the db '$dbname'");
if($_SESSION['username']) {
echo "Welcome, User: {$_SESSION['username']}";
} else {
echo "User not logged in!";
}
?>
并且我的logout.php代码:
<?php
session_start()
?>
<!DOCTYPE html>
<html>
<body>
<?php
session_unset();
session_destroy();
echo "<h1>You are logged out!</h1>";
echo "<br>";
echo "<h2><strong>You will be redirected back to Home in 3 seconds</strong></h2>";
?>
<meta http-equiv="refresh" content="3;URL=index.php" />
</body>
</html>
答案
由于会话被破坏,请尝试在if语句中使用isset($ _ SESSION)&& isset($ _ SESSION ['username'])。
另一答案
当用户未登录时,您仍在检查会话变量以获取用户名密钥。
检查是否有会话,并且会话中存在用户名密钥,如下所示。
$dbname = 'lw17894'; # Change to your username
$dbuser = 'lw17894';
$dbpass = 'obscure';
$dbhost = 'localhost';
$link = mysqli_connect( $dbhost, $dbuser, $dbpass )
or die( "Unable to Connect to '$dbhost'" );
mysqli_select_db( $link, $dbname )
or die("Could not open the db '$dbname'");
if (session_status() != PHP_SESSION_NONE) {
if(array_key_exists ('username' , $_SESSION ) {
echo "Welcome, User: {$_SESSION['username']}";
} else {
echo "User not logged in!";
}
}
以上是关于未定义索引:用户注销时的用户名错误的主要内容,如果未能解决你的问题,请参考以下文章
会话 ID 未显示错误消息注意:未定义索引:用户 ID [重复]