이 글에서는 PHP에서 동일한 도메인 이름으로 두 개의 서로 다른 프로젝트에 대한 독립적인 로그인 메커니즘을 구현하는 방법에 대한 관련 정보를 주로 소개합니다. 이 글은 모든 사람의 학습이나 업무에 특정 참조 가치가 있는 샘플 코드를 통해 자세히 소개합니다. , 필요하신 친구들은 오셔서 아래를 보시면 됩니다.
머리말
현재 http://example.com과 같은 도메인 이름 아래에 example.com/a/, example.com/b/라는 두 개의 프로젝트가 있습니다. 이 두 프로젝트는 독립적인 프로그램이며 서로 다른 회원 로그인 메커니즘을 가지고 있지만 동일한 도메인 이름에서 해당 세션이 공유된다는 것을 알고 있습니다. 즉, 스테이션 a에 로그인한 후 스테이션 b의 로그인 세션도 나타납니다. 스테이션 a의 세션 정보는 기본 session_id 이름이 PHPSESSID이므로, 즉 프로젝트 a를 처음 방문하면 자동으로 PHPSESSID라는 이름의 session_id를 생성하고 서버 측에서 session_id라는 이름의 파일을 생성한 후 session_id를 보내십시오. 브라우저의 쿠키에 저장하십시오. 다음에 방문할 때 서버는 session_id를 얻은 후 세션을 계속합니다. 이런 식으로 세션 정보를 공유하는 상황이 발생하게 됩니다. 두 개의 서로 다른 세션 정보를 어떻게 분리할 수 있을까요?
1. session_name 정의
는 실제로 매우 간단합니다. 프로젝트 b의 초기화 파일에서 session을 사용할 때 session_name을 수정하면 됩니다.
example.com/a/init.php
session_start(); // ...
example.com/b/init.php
// session_id('123456'); // 可以自定义session_id,默认是系统自己生成的 session_name('EBCP_SID'); // session_name 必须定义在session_start() 前 session_start(); // ...
2. 테스트
example.com /a/test.php
<?php // a项目测试页面 define("IN_EB", true); include_once("./init.php"); if($_SESSION['nickname']) { // dump("session 页面- 欢迎你继续回来 {$_SESSION['nickname']} " . date("Y-m-d H:i:s")); } else { $_SESSION['nickname'] = "Corwien"; dump("session 页面- 你是第一次登录 {$_SESSION['nickname']} " . date("Y-m-d H:i:s")); }
출력 결과:
session 页面- 欢迎你继续回来 Corwien 2017-09-22 07:49:15
프로젝트의 브라우저 쿠키:
example.com/b/test.php
<?php // b项目测试页面 define("IN_EB", true); include_once("./init.php"); if($_SESSION['nickname']) { // dump("session_v2 页面- 欢迎你继续回来 {$_SESSION['nickname']} " . date("Y-m-d H:i:s")); } else { $_SESSION['nickname'] = "JackMa"; dump("session_v2 页面- 你是第一次登录 {$_SESSION['nickname']} " . date("Y-m-d H:i:s")); }
출력 결과:
session_v2 页面- 欢迎你继续回来 JackMa 2017-09-22 07:49:15
프로젝트의 B 브라우저 쿠키:
위 내용은 PHP가 동일한 도메인 이름 아래 두 개의 서로 다른 프로젝트에 대해 독립적인 로그인 메커니즘을 사용하는 방법에 대한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!