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(); ?>
关键修改说明
- 新增注册成功后的自动登录逻辑:通过检查会话变量
$_SESSION['new_registered_user']识别新注册用户,直接标记为已登录 - 注册页面需配合修改:在注册成功的代码块中添加以下代码,跳转到member.php时自动触发登录:
// 注册成功后设置会话并跳转 $_SESSION['new_registered_user'] = $new_username; // $new_username为刚注册的用户名 header('Location: member.php'); exit;
- 简化了用户名、密码的初始化逻辑,优化了登录失败的提示文本
内容的提问来源于stack exchange,提问作者Neo
相关产品推荐
相关产品推荐

