You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP&MariaDB书籍代码无法自动登录问题求助

修复注册后自动登录的member.php代码

当前代码仅处理表单POST提交的登录请求,注册完成后未自动将用户登录状态写入会话,导致用户仍需手动登录。以下是修改后的代码,支持注册后直接自动登录:

<?php
// 引入应用函数文件
require_once('bookmark_fns.php');
session_start();

// 处理注册成功后的自动登录
if (isset($_SESSION['new_registered_user'])) {
    $username = $_SESSION['new_registered_user'];
    $_SESSION['valid_user'] = $username;
    unset($_SESSION['new_registered_user']);
} else {
    // 处理常规登录请求
    $username = isset($_POST['username']) ? trim($_POST['username']) : '';
    $passwd = isset($_POST['passwd']) ? trim($_POST['passwd']) : '';

    if ($username && $passwd) {
        try {
            login($username, $passwd);
            $_SESSION['valid_user'] = $username;
        } catch(Exception $e) {
            do_html_header('问题:');
            echo '无法登录,请检查用户名和密码。<br>必须登录才能访问此页面。';
            do_html_url('login.php', '登录');
            do_html_footer();
            exit;
        }
    }
}

do_html_header('首页');
check_valid_user();
// 获取用户收藏的书签
if ($url_array = get_user_urls($_SESSION['valid_user'])) {
    display_user_urls($url_array);
}

// 显示用户菜单
display_user_menu();

do_html_footer();
?>

关键修改说明

  1. 新增注册成功后的自动登录逻辑:通过检查会话变量$_SESSION['new_registered_user']识别新注册用户,直接标记为已登录
  2. 注册页面需配合修改:在注册成功的代码块中添加以下代码,跳转到member.php时自动触发登录:
// 注册成功后设置会话并跳转
$_SESSION['new_registered_user'] = $new_username; // $new_username为刚注册的用户名
header('Location: member.php');
exit;
  1. 简化了用户名、密码的初始化逻辑,优化了登录失败的提示文本

内容的提问来源于stack exchange,提问作者Neo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 13:25:13