> 백엔드 개발 > PHP 튜토리얼 > PHP에서 세션을 만드는 방법

PHP에서 세션을 만드는 방법

墨辰丷
풀어 주다: 2023-03-30 12:00:02
원래의
6167명이 탐색했습니다.

이 글은 주로 Php에서 Session을 만드는 방법을 소개합니다. 관심있는 친구들이 참고하시면 좋을 것 같습니다.

관련 주제 추천: php 세션 (그림, 텍스트, 비디오 및 실제 사례 포함)

세션 세션을 시작하고 $admin 변수 생성:

// 启动 session session_start(); 
// 声明一个名为 admin 的变量,并赋空值。 
$_session["admin"] = null; 
?>  
로그인 후 복사

Session을 사용하거나 PHP 파일이 필요한 경우 세션 변수를 호출하려면 세션을 호출하기 전에 session_start() 함수를 사용하여 시작해야 합니다. 다른 것을 설정할 필요가 없습니다. PHP가 자동으로 세션 파일을 생성합니다.

이 프로그램을 실행한 후 시스템 임시 폴더에서 세션 파일을 찾을 수 있습니다. 일반 파일 이름은 sess_4c83638b3b0dbf65583181c2f89168ec와 32비트로 인코딩된 임의 문자열 형식입니다. 편집기로 열고 내용을 살펴보세요.

admin|N;
로그인 후 복사

일반 콘텐츠 구조:

변수 이름 | 유형: 길이: 값

각 변수를 세미콜론으로 구분합니다. 길이, 종류 등 일부 생략이 가능합니다.

확인 절차를 살펴보겠습니다. 데이터베이스에 사용자 이름과 md5 암호화된 비밀번호가 저장되어 있다고 가정합니다.

// 表单提交后...   
$posts = $_POST; 
// 清除一些空白符号 
foreach ($posts as $key => $value) 
{ 
$posts[$key] = trim($value); 
} 
$password = md5($posts["password"]); 
$username = $posts["username"]; 
$query = "SELECT `username` FROM `user` WHERE `password` = '$password'"; 
// 取得查询结果 
$userInfo = $DB->getRow($query); 
if (!emptyempty($userInfo)) 
{ 
if ($userInfo["username"] == $username) 
{ 
// 当验证通过后,启动 session 
session_start(); 
// 注册登陆成功的 admin 变量,并赋值 true 
$_SESSION["admin"] = true; 
} 
else 
{ 
die("用户名密码错误"); 
} 
} 
else 
{ 
die("用户名密码错误"); 
}
로그인 후 복사

로그인 여부를 결정하기 위해 사용자 확인이 필요한 페이지에서 세션을 시작합니다.

// 防止全局变量造成安全隐患 
$admin = false; 
// 启动会话,这步必不可少 
session_start(); 
// 判断是否登陆 
if (isset($_SESSION["admin"]) && $_SESSION["admin"] == true) 
{ 
echo "您已经成功登陆"; 
} 
else 
{ 
// 验证失败,将 $_session["admin"] 置为 false 
$_SESSION["admin"] = false; 
die("您无权访问"); 
} 
?>
로그인 후 복사

인가요? 아주 간단하죠? 변경 $ _session은 서버 측에 저장된 배열이라고 볼 수 있습니다. 우리가 등록하는 각 변수는 배열의 키이며 이는 배열을 사용하는 것과 다르지 않습니다.

시스템에서 로그아웃하려면 어떻게 해야 하나요? 세션을 삭제하면 됩니다.

<?php 
session_start(); 
// 这种方法是将原来注册的某个变量销毁 
unset($_SESSION["admin"]); 
// 这种方法是销毁整个 session 文件 
session_destroy(); 
?>
로그인 후 복사

Session을 사용하면 Cookie와 같이 Life Cycle을 설정할 수 있나요? Session을 Cookie와 함께 사용하는 것이 가장 편리하다고 할 수 있습니다.

세션은 클라이언트 사용자를 어떻게 결정합니까? 세션 ID는 세션 파일의 파일 이름이므로 고유성과 임의성을 보장할 수 있습니다. 세션의 보안. 일반적으로 Session Life Cycle이 설정되지 않은 경우 Session ID는 메모리에 저장되며, 브라우저를 닫은 후 해당 ID는 자동으로 로그아웃되며 해당 페이지를 다시 요청하면 새로운 Session ID가 등록됩니다.

클라이언트가 쿠키를 비활성화하지 않으면 쿠키는 세션 시작 시 세션 ID와 세션 수명을 저장하는 역할을 합니다. 세션 수명을 수동으로 설정해 보겠습니다.

session_start(); 
// 保存一天 
$lifeTime = 24 * 3600; 
setcookie(session_name(), session_id(), time() + $lifeTime, "/"); 
?>  
로그인 후 복사

실제로 Session은 세션 수명을 설정하는 session_set_cookie_params() 함수도 제공합니다. 이 함수는 session_start() 함수가 호출되기 전에 호출되어야 합니다. 클라이언트는 IE 6.0에서 session_set_cookie_params() 함수 설정 쿠키에 몇 가지 문제가 있으므로 여전히 setcookie 함수를 수동으로 호출하여 쿠키를 생성합니다.

클라이언트가 쿠키를 비활성화하면 어떻게 되나요? 브라우저를 닫고 페이지를 다시 요청하는 한 전체 수명 주기는 세션을 다시 등록해야 합니다. 그러면 세션 ID를 전달하는 방법은 무엇입니까? URL이나 숨겨진 양식을 통해 PHP는 자동으로 URL에 세션 ID를 보냅니다: http://www.openphp .cn /index.php ?PHPSESSID=bba5b2a240a77e5b44cfa01d49cf9669, 여기서 URL의 매개변수 PHPSESSID는 세션 ID입니다. $_GET을 사용하여 값을 가져오면 페이지 간에 세션 ID를 전송할 수 있습니다.

// 保存一天 
<?php 
$lifeTime = 24 * 3600; 
session_set_cookie_params($lifeTime); 
session_start(); 
$_session["admin"] = true; 
?>  
로그인 후 복사

가상 호스트의 경우 모든 사용자의 세션이 시스템 임시 폴더에 저장되면 유지 관리가 어려워지고 보안이 저하됩니다. 세션 파일의 저장 경로를 수동으로 설정할 수 있는데, session_save_path()에서 제공하는 기능이 있습니다. . 웹을 통해 액세스할 수 없는 폴더를 세션 저장소 디렉터리로 지정할 수 있습니다. 물론 해당 폴더에는 읽기/쓰기 속성이 있어야 합니다.

// 保存一天 
<?php 
$lifeTime = 24 * 3600; 
// 取得当前 session 名,默认为 PHPSESSID 
$sessionName = session_name(); 
// 取得 session ID $sessionID = $_GET[$sessionName]; 
// 使用 session_id() 设置获得的 session ID 
session_id($sessionID); 
session_set_cookie_params($lifeTime); 
session_start(); 
$_session["admin"] = true; 
?>
로그인 후 복사

session_set_cookie_params(); 함수와 마찬가지로 session_save_path() 함수도 session_start() 함수가 호출되기 전에 호출되어야 합니다. 세션에 배열과 객체를 저장할 수도 있습니다. 배열을 조작하는 것과 일반 변수를 조작하는 것에는 차이가 없습니다. 객체를 저장할 때 PHP는 객체를 자동으로 직렬화(직렬화라고도 함)한 다음 이를 세션에 저장합니다. 다음 예는 이 점을 보여줍니다.

<?php 
// 设置一个存放目录 
$savePath = "./session_save_dir/"; 
// 保存一天 
$lifeTime = 24 * 3600; 
session_save_path($savePath); session_set_cookie_params($lifeTime); 
session_start(); 
$_session["admin"] = true; 
?>  
로그인 후 복사

요약

: 위 내용은 이 기사의 전체 내용입니다. 모든 사람의 학습에 도움이 되기를 바랍니다.

관련 권장 사항:

PHP로 원격 이미지 크기 및 크기를 얻는 방법

php 이중 계층 루프를 사용하여 99 곱셈표를 구현하는 방법

php는 Express Bird 인터페이스를 호출합니다

위 내용은 PHP에서 세션을 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿