>  기사  >  백엔드 개발  >  30분 후 PHP 세션이 어떻게 파괴되는지에 대한 자세한 설명(코드 예제 포함)

30분 후 PHP 세션이 어떻게 파괴되는지에 대한 자세한 설명(코드 예제 포함)

藏色散人
藏色散人앞으로
2022-11-14 16:34:511996검색

이 글에서는 특정 시간에 PHP 세션을 파괴하는 방법에 대해 소개하겠습니다. session_destroy() 함수를 통해 세션을 파괴하는 방법에 대해 자세히 소개합니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다~

30분 후 PHP 세션이 어떻게 파괴되는지에 대한 자세한 설명(코드 예제 포함)

PHP에는 모든 세션 값을 지우는 핵심 함수 session_destroy()가 있습니다. true 또는 false의 부울 값을 반환하는 매개 변수가 없는 간단한 함수입니다.

PHP의 세션 ID는 기본적으로 쿠키에 저장됩니다. 일반적으로 세션 쿠키 파일의 이름은 PHPSESSID입니다. session_destroy 함수는 쿠키의 sessionid를 취소하지 않습니다.

세션을 "완전히" 삭제하려면 세션 ID도 설정 해제해야 합니다.

이 간단한 예에서는 session_destroy()를 사용하여 세션을 삭제합니다. 만료된 PHP 세션 ID로 전체 세션을 종료하기 위해 set_cookie() 메서드를 사용합니다.

빠른 예

destroy-session.php

<?php
// Always remember to initialize the session,
// even before attempting to destroy it.

// Destroy all the session variables.
$_SESSION = array();

// delete the session cookie also to destroy the session
if (ini_get("session.use_cookies")) {
    $cookieParam = session_get_cookie_params();
    setcookie(session_name(), &#39;&#39;, time() - 42000, $cookieParam["path"], $cookieParam["domain"], $cookieParam["secure"], $cookieParam["httponly"]);
}

// as a last step, destroy the session.
session_destroy();

참고: PHP 세션이 삭제된 후 다시 시작하려면 session_start()를 사용하십시오. 특정 세션 변수를 설정 해제하려면 PHP$_SESSION을 사용하세요. 이전 PHP 버전의 경우 session_unset()을 사용하세요. php 세션 파괴 출력 [추천 학습: PHP 비디오 튜토리얼]

이 로그인에 대해 session_destroy() 예제

PHP 세션, session_destroy 등을 사용하기 위한 로그인 샘플 코드를 만들어 보겠습니다. 이를 통해 사용자는 현재 세션에 로그인하고 로그아웃할 수 있습니다. PHP 스크립트에서 완전한 사용자 등록 및 로그인을 찾고 있다면 이 코드를 사용하십시오. 이 샘플은 자동 로그인 세션 만료 기능을 제공합니다.

로그인 양식이 포함된 로그인 페이지

이 양식에는 사용자가 입력한 사용자 이름과 비밀번호가 표시됩니다. PHP에서 로그인 자격 증명을 확인합니다. 로그인에 성공하면 로그인 상태가 PHP 세션에 저장됩니다. 만료 시간은 마지막 로그인 시간으로부터 30분으로 설정됩니다. 마지막 로그인 시간과 만료 시간을 PHP 세션에 저장합니다. 이 두 세션 변수는 세션을 자동으로 만료하는 데 사용됩니다.

login.php

<?php
session_start();
$expirtyMinutes = 1;
?>
<html>
<head>
<title>PHP Session Destroy after 30 Minutes</title>
<link rel=&#39;stylesheet&#39; href=&#39;style.css&#39; type=&#39;text/css&#39; />
<link rel=&#39;stylesheet&#39; href=&#39;form.css&#39; type=&#39;text/css&#39; />
</head>
<body>
    <div class="phppot-container">
        <h1>Login</h1>
        <form name="login-form" method="post">
            <table>
                <tr>
                    <td>Username</td>
                    <td><input type="text" name="username"></td>
                </tr>
                <tr>
                    <td>Password</td>
                    <td><input type="password" name="password"></td>
                </tr>
                <tr>
                    <td><input type="submit" value="Sign in"
                        name="submit"></td>
                </tr>
            </table>
        </form>
<?php
if (isset($_POST[&#39;submit&#39;])) {
    $usernameRef = "admin";
    $passwordRef = "test";
    $username = $_POST[&#39;username&#39;];
    $password = $_POST[&#39;password&#39;];

    // here in this example code focus is session destroy / expiry only
    // refer for registration and login code https://phppot.com/php/user-registration-in-php-with-login-form-with-mysql-and-code-download/
    if ($usernameRef == $username && $passwordRef == $password) {
        $_SESSION[&#39;login-user&#39;] = $username;
        // login time is stored as reference
        $_SESSION[&#39;ref-time&#39;] = time();
        // Storing the logged in time.
        // Expiring session in 30 minutes from the login time.
        // See this is 30 minutes from login time. It is not &#39;last active time&#39;.
        // If you want to expire after last active time, then this time needs
        // to be updated after every use of the system.
        // you can adjust $expirtyMinutes as per your need
        // for testing this code, change it to 1, so that the session
        // will expire in one minute
        // set the expiry time and
        $_SESSION[&#39;expiry-time&#39;] = time() + ($expirtyMinutes * 60);
        // redirect to home
        // do not include home page, it should be a redirect
        header(&#39;Location: home.php&#39;);
    } else {
        echo "Wrong username or password. Try again!";
    }
}
?>
</div>
</body>
</html>

Dashboard는 PHP 로그인 세션을 인증하고 로그인 및 로그아웃 링크를 표시합니다.

로그인 후 리디렉션 대상 페이지입니다. 로그인 세션이 존재하는 경우 로그아웃 링크가 표시됩니다. 시간이 초과되면 세션 삭제를 호출합니다. 모든 세션을 파괴하는 PHP 코드입니다. 만료 시간이 30분에 도달하거나 세션이 비어 있으면 사용자에게 로그인하라는 메시지가 표시됩니다.

home.php

<?php
session_start();
?>
<html>
<head>
<title>PHP Session Destroy after 30 Minutes</title>
<link rel=&#39;stylesheet&#39; href=&#39;style.css&#39; type=&#39;text/css&#39; />
<link rel=&#39;stylesheet&#39; href=&#39;form.css&#39; type=&#39;text/css&#39; />
</head>
<body>
    <div class="phppot-container">
<?php
if (! isset($_SESSION[&#39;login-user&#39;])) {
    echo "Login again!<br><br>";
    echo "<a href=&#39;login.php&#39;>Login</a>";
} else {
    $currentTime = time();
    if ($currentTime > $_SESSION[&#39;expiry-time&#39;]) {
        require_once __DIR__ . &#39;/destroy-session.php&#39;;
        echo "Session expired!<br><br><a href=&#39;login.php&#39;>Login</a>";
    } else {
        ?>
        <h1>Welcome <?php echo $_SESSION[&#39;login-user&#39;];?>!</h1>
        <a href=&#39;logout.php&#39;>Log out</a>
<?php
    }
}
?>
</div>
</body>
</html>

이 PHP 코드는 세션이 만료되기 전에 로그아웃하려는 사용자를 위한 것입니다.

세션을 삭제하도록 요청하여 세션을 삭제합니다. PHP 코드. 그런 다음 사용자를 로그인 페이지로 리디렉션합니다. logout.php

<?php
session_start();
require_once __DIR__ . &#39;/destroy-session.php&#39;;
header(&#39;Location: login.php&#39;);
?>

이 예제가 PHP 세션을 삭제하는 방법을 이해하는 데 도움이 되기를 바랍니다. 그리고 이는 세션을 파괴해야 하는 필요성을 설명하는 완벽한 시나리오입니다.

이 글은 재인쇄되었습니다. 원주소 : https://juejin.cn/post/7164391542164520990

위 내용은 30분 후 PHP 세션이 어떻게 파괴되는지에 대한 자세한 설명(코드 예제 포함)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 juejin.im에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제