PHP如何在同一域名下的两个不同项目中实现独立登录机制。
项目1(Project1)的代码示例
<?php
// 设置项目1的会话名称
session_name('project1_session');
// 启动会话
session_start();
// 检查用户是否已登录
if (!isset($_SESSION['user_id'])) {
// 用户未登录,重定向到登录页面
header('Location: login.php');
exit();
}
// 用户已登录,继续处理项目1的逻辑
echo "欢迎访问项目1,用户ID:" . $_SESSION['user_id'];
?>
项目2(Project2)的代码示例
<?php
// 设置项目2的会话名称
session_name('project2_session');
// 启动会话
session_start();
// 检查用户是否已登录
if (!isset($_SESSION['user_id'])) {
// 用户未登录,重定向到登录页面
header('Location: login.php');
exit();
}
// 用户已登录,继续处理项目2的逻辑
echo "欢迎访问项目2,用户ID:" . $_SESSION['user_id'];
?>
登录页面(login.php)代码示例
<?php
// 假设数据库验证已通过,获取用户ID
$user_id = 123; // 这个值通常是从数据库获取的
// 判断是哪个项目的登录请求
if ($_POST['project'] == 'project1') {
// 设置项目1的会话名称
session_name('project1_session');
} else {
// 设置项目2的会话名称
session_name('project2_session');
}
// 启动会话
session_start();
// 设置会话变量
$_SESSION['user_id'] = $user_id;
// 重定向到相应的项目首页
if ($_POST['project'] == 'project1') {
header('Location: project1_index.php');
} else {
header('Location: project2_index.php');
}
exit();
?>
登录表单示例(login_form.html)
<form method="post" action="login.php">
<!-- 用户名和密码输入字段 -->
<input type="text" name="username" placeholder="用户名">
<input type="password" name="password" placeholder="密码">
<!-- 隐藏字段用于区分项目 -->
<input type="hidden" name="project" value="project1"> <!-- 对于项目2,将值改为project2 -->
<!-- 提交按钮 -->
<input type="submit" value="登录">
</form>
通过这种方法,可以确保在同一域名下的不同项目使用独立的会话名称,从而实现独立的登录机制。