php实现当前用户
PHP 获取当前用户信息
在 PHP 中获取当前用户信息通常涉及会话管理、数据库查询或系统级操作。以下是几种常见场景的实现方法:
使用会话(Session)存储用户信息
用户登录后通常将用户 ID 或基本信息存储在会话中:
session_start();
// 登录成功后设置会话变量
$_SESSION['user_id'] = 123;
$_SESSION['username'] = 'example_user';
// 获取当前用户信息
$currentUserId = $_SESSION['user_id'] ?? null;
$currentUsername = $_SESSION['username'] ?? 'Guest';
数据库查询当前用户
通过会话中的用户 ID 查询数据库获取详细信息:
$pdo = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = :id");
$stmt->execute(['id' => $_SESSION['user_id']]);
$currentUser = $stmt->fetch(PDO::FETCH_ASSOC);
获取系统当前用户(命令行场景)
在 CLI 环境下获取系统用户:
$systemUser = getenv('USERNAME') ?: getenv('USER');
echo "System user: " . $systemUser;
OAuth 认证用户
使用第三方登录(如 Google OAuth)时:
$token = $_SESSION['access_token'] ?? null;
if ($token) {
$client = new Google_Client();
$client->setAccessToken($token);
$oauth2 = new Google_Service_Oauth2($client);
$userInfo = $oauth2->userinfo->get();
$email = $userInfo->email;
}
安全注意事项
- 始终验证会话数据真实性
- 敏感信息不应全部存储在会话中
- 数据库查询使用预处理语句防止 SQL 注入
- OAuth 流程需验证 state 参数防 CSRF
以上方法可根据实际应用场景组合使用,Web 应用中最常见的是会话+数据库查询的组合方式。







