技术 2025-07-28 阅读: 31

Warning : Undefined array key "admin_username" in

这个警告是因为在 post_edit.php 文件中尝试访问 $_SESSION['admin_username'] 变量,但该变量未定义。这通常发生在用户会话中没有存储管理员用户名的情况下。

解决方案

有两种方法可以解决这个问题:

方法一:确保在登录时存储用户名

在登录处理文件(如 login.php)中,确保在用户成功登录后存储用户名:

// 登录验证成功后
$_SESSION['admin_id'] = $admin['id'];
$_SESSION['admin_username'] = $admin['username']; // 确保存储用户名
header('Location: dashboard.php');
exit;

方法二:在使用前检查并设置默认值

post_edit.php 文件中,可以添加检查并设置默认值:

// 初始化文章数据
$post = [
    'id' => '',
    'title' => '',
    'slug' => '',
    'category_id' => '',
    'content' => '',
    'excerpt' => '',
    'status' => 'draft',
    'featured_image' => '',
    'author' => isset($_SESSION['admin_username']) ? $_SESSION['admin_username'] : '管理员'
];

推荐实现

最好的做法是结合两种方法:确保登录时存储用户名,并在使用前进行检查:

// 在登录处理文件中(login.php)
if ($passwordMatch) {
    // 登录成功
    $_SESSION['admin_id'] = $admin['id'];
    $_SESSION['admin_username'] = $admin['username']; // 存储用户名
    header('Location: dashboard.php');
    exit;
}

// 在post_edit.php中
$post = [
    'id' => '',
    'title' => '',
    'slug' => '',
    'category_id' => '',
    'content' => '',
    'excerpt' => '',
    'status' => 'draft',
    'featured_image' => '',
    'author' => isset($_SESSION['admin_username']) ? $_SESSION['admin_username'] : '管理员'
];

这样可以确保即使会话中没有存储用户名,也不会出现警告,并且默认使用"管理员"作为作者名称。

标签:

分享本文:

链接已复制到剪贴板
作者头像

管理员

博客作者 | 技术爱好者

热爱分享编程技术和经验,专注于PHP、前端开发和Web性能优化。

搜索文章