【问题标题】:Undefined index: username error when user has logged out未定义的索引:用户注销时的用户名错误
【发布时间】:2018-03-02 06:47:05
【问题描述】:

这是我的 index.php 代码的一部分,它打印当前用户登录 $SESSION。但是当用户单击注销时,它会在第 x 行给出一条错误消息,指出“未定义的索引:用户名”。 这是什么意思,我该如何解决?

 <?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>

【问题讨论】:

  • 无疑是骗子,但没有 session_start(),你应该使用 isset 或 !empty 来测试你的会话密钥,因为当你销毁或开始一个新的会话时,你将没有现有的会话key:用户名,因此有一个未定义的索引。

标签: php html session login logout


【解决方案1】:

由于会话被破坏,请尝试在 if 语句中使用 isset($_SESSION) && isset($_SESSION['username'])。

【讨论】:

    【解决方案2】:

    当用户未登录时,您仍在检查会话变量中的用户名键。

    检查是否有会话,并且像这样在会话中存在用户名密钥。

      $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!";
            }
        }
    

    【讨论】:

    • 我会删除 session_status() 条件和包装器,并将 session_start() 放在文件的开头。
    猜你喜欢
    • 2018-03-17
    • 2018-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 2015-04-09
    • 2012-12-16
    相关资源
    最近更新 更多