Session은 서버측에 텍스트 파일 형태로 저장되기 때문에 클라이언트가 Session 내용을 수정할 염려가 없습니다. 실제로 서버 측 세션 파일에서 PHP는 세션 파일의 권한을 자동으로 수정하여 시스템 읽기 및 쓰기 권한만 유지하고 ftp를 통해 수정할 수 없으므로 훨씬 안전합니다.
쿠키의 경우 사용자가 로그인했는지 확인하려면 사용자 이름과 비밀번호(md5 암호화 문자열일 수 있음)를 쿠키에 저장하고 페이지가 요청될 때마다 이를 확인해야 합니다. 사용자 이름과 비밀번호가 데이터베이스에 저장되어 있으면 매번 데이터베이스 쿼리를 실행해야 하므로 데이터베이스에 불필요한 부담을 줍니다. 한번의 검증만 할 수는 없기 때문입니다. 왜? 클라이언트 쿠키의 정보가 수정될 수 있기 때문입니다. 사용자의 로그인 여부를 나타내기 위해 $admin 변수를 저장하면, $admin이 true이면 로그인된 것이고, false이면 로그인되지 않은 것입니다. 처음으로 인증을 통과한 후 $admin 같음이 쿠키에 저장되므로 다음 번에는 확인할 필요가 없습니다. 네, 맞나요? 틀렸습니다. 누군가 $admin 변수를 true 값으로 위조하면 그 사람이 즉시 관리 권한을 얻게 된다는 뜻이 아닌가요? 매우 안전하지 않습니다.
세션은 서버 측에 저장되므로 원격 사용자는 세션 파일의 내용을 수정할 수 없으므로 간단히 $admin 변수를 저장하여 로그인 여부를 결정할 수 있습니다. 전달되면 $admin 값을 true로 설정하고 나중에 값이 true인지 확인합니다. 그렇지 않으면 로그인 인터페이스로 이동하여 많은 데이터베이스 작업을 줄일 수 있습니다. 그리고 쿠키를 확인하기 위해 매번 비밀번호를 전달해야 하는 불안감을 줄일 수 있습니다(SSL 보안 프로토콜을 사용하지 않는 경우 세션 확인은 한 번만 전달하면 됩니다). 비밀번호가 md5로 암호화되어 있어도 쉽게 가로챌 수 있습니다.
물론 쉬운 제어, 사용자 정의 저장(데이터베이스에 저장) 등 Session을 사용하면 많은 이점이 있습니다. 여기서는 더 이상 말하지 않겠습니다.
세션을 php.ini에서 설정해야 하나요? 일반적으로 모든 사람이 php.ini를 수정할 수 있는 권한을 갖고 있는 것은 아니기 때문에 세션의 기본 저장 경로는 서버의 시스템 임시 폴더입니다. 이를 사용자 정의하여 자체 폴더에 저장할 수 있습니다.
세션 생성 방법을 소개합니다. 정말 간단해요.
세션 시작 및 $admin 변수 생성:
// 세션 시작
session_start()
// admin이라는 변수를 선언하고 NULL 값을 할당합니다.
$_SESSION["admin"] = null;
?>
Seesion을 사용하거나 PHP 파일이 Session 변수를 호출하려면 Session을 호출하기 전에 시작해야 합니다. session_start( ) 기능. 다른 것을 설정할 필요가 없습니다. PHP는 자동으로 세션 파일을 생성합니다.
이 프로그램을 실행한 후 시스템 임시 폴더로 이동하여 세션 파일을 찾을 수 있습니다. 일반 파일 이름은 sess_4c83638b3b0dbf65583181c2f89168ec 뒤에 32비트로 인코딩된 임의 문자열이 오는 형식입니다. 편집기로 열고 내용을 살펴보세요.
admin|N; 일반적으로 내용의 구조는 다음과 같습니다.
변수 이름|유형: 길이: 값. 각 변수는 세미콜론으로 구분합니다. 길이, 종류 등 일부 생략이 가능합니다.
데이터베이스에 사용자 이름과 md5 암호화된 비밀번호가 저장되어 있다고 가정하고 확인 프로세스를 살펴보겠습니다.
login.php
// 양식이 제출된 후...
$posts = $_POST;
// 일부 공백 문자 지우기
foreach ($posts as $key => $value) {
$posts[$key] = Trim($value) ;
}
$password = md5($posts["password"])
$username = $posts["username"]
$query = "SELECT `username` ` WHERE ` 비밀번호` = '$password' AND `username` = '$username'";
// 쿼리 결과 가져오기
$userInfo = $DB->getRow($query);
if (!empty ($userInfo)) {
// 인증이 통과되면 Session 시작
session_start()
// 로그인 성공을 위한 admin 변수를 등록하고 true 값을 할당
$ _SESSION["admin"] = true;
} else {
die("사용자 이름 및 비밀번호가 잘못됨")
}
?> 로그인 여부를 결정하기 위한 사용자 확인:
// 전역 변수가 보안 위험을 유발하지 않도록 방지
$admin = false
// 세션을 시작합니다. 이 단계는 필수입니다.
session_start();
// 로그인 여부 결정
if (isset($_SESSION["admin"]) && $_SESSION["admin"] === true) {
echo " 성공적으로 로그인했습니다.";
} else {
// 확인 실패, $_SESSION["admin"]을 false로 설정
$_SESSION["admin"] = false;
die(" 접속 권한이 없습니다.");
}
?>
아주 간단하지 않나요? $_SESSION을 서버 측에 저장된 배열이라고 생각하면 됩니다. 우리가 등록하는 각 변수는 배열의 키이며 이는 배열을 사용하는 것과 다르지 않습니다.
시스템에서 로그아웃하고 싶은데 어떻게 해야 하나요? 세션을 파괴하면 됩니다.
session_start();
// 이 메소드는 이전에 등록된 변수를 삭제하는 것입니다.
unset($_SESSION['admin'])// 이 메소드는 전체 세션 파일을 삭제하려면
session_destroy()
?> 세션이 쿠키처럼 수명 주기를 설정할 수 있나요? 세션을 사용하면 쿠키를 완전히 버린다는 뜻인가요? 쿠키와 함께 세션을 사용하는 것이 가장 편리하다고 말하고 싶습니다.
현재 페이지 1/2 12다음 페이지
위 내용은 PHP 학습에 대한 소개입니다. PHP 세션을 배우는 친구들은 PHP 학습 내용이 포함된 PHP 세션 시작하기의 1/2페이지를 꼭 읽어보시기 바랍니다. PHP 튜토리얼에 관심이 있습니다.