Waktu sesi PHP disetel tidak disetel dan periksa keberadaan

0
(0)

oleh Vincy. Terakhir diubah pada 21 November 2021.

Sesi PHP adalah salah satu metode untuk menjaga persistensi data di sisi server.

Sesi PHP memiliki batas waktu tenggat waktu untuk menjaga data tetap ada. File konfigurasi PHP menyertakan arahan untuk memiliki spesifikasi ini.

Kami juga dapat membuat kode khusus untuk mengubah batas waktu sesi PHP default.

Artikel ini berisi bagian yang menjelaskan sesi PHP, konfigurasi batas waktunya. Ini memberikan contoh untuk menetapkan batas sesi dan melacak keberadaan.

Contoh di bawah ini memberikan solusi cepat untuk mengatur waktu sesi PHP. Ini hanya berisi dua langkah untuk mengatur dan melacak status kedaluwarsa sesi.

Contoh cepat

1. Buat file set-session.php dan atur nilai dan lifetime.


<?php
session_start();
//Set PHP session with value, time
$currentTime = time();
$_SESSION['color'] = array(
    "value" => "blue",
    "time" => $currentTime,
    "life_time" => 5
);
?>

2. Buat file check-session.php untuk menghitung keberadaan sesi.


<?php
session_start();
if (isset($_SESSION['color'])) {
   $sessionSetTime = $_SESSION['color']['time'];
   $sessionLifeTime = $_SESSION['color']['life_time'];
   if ((time() - $sessionSetTime) > $sessionLifeTime) {
        unset($_SESSION['color']);
        print 'Session expired';
    }
}
?>

Tentang sesi PHP

Kita telah melihat sesi dan cookie PHP di artikel sebelumnya. Sesi PHP adalah untuk mengelola data aplikasi, status persisten selama alur kerja.

Ada banyak sekali kegunaan session dalam sebuah aplikasi. Daftar di bawah ini menunjukkan beberapa status atau data yang dikelola oleh penggunaan sesi.

Kita telah melihat cara membuat skrip login menggunakan sesi PHP. Dalam hal itu, pelacakan seumur hidup sesi dapat digunakan untuk keluar setelah beberapa menit tidak aktif.

sesi php

Pengaturan seumur hidup sesi PHP

Bagian ini menjelaskan arahan konfigurasi yang digunakan untuk mengatur waktu sesi PHP. Tabel di bawah ini menunjukkan dua pengaturan PHP.ini yang terkait dengan sesi.

arahan PHP Keterangan
session.gc_maxlifetime Ini menetapkan masa pakai maksimal setelah sesi akan berlalu dan dikumpulkan sebagai sampah.
session.cookie_lifetime Ini menetapkan batas waktu untuk cookie sesi dalam hitungan detik. Defaultnya adalah 0 yang berarti bertahan sampai klien berhenti. Catatan: PHP session_set_cookie_params() menyetel semua parameter cookie sesi dalam waktu proses.

Info PHP di bawah ini menyoroti pengaturan konfigurasi sesi. Lihat arahan konfigurasi sesi runtime lainnya di situs resmi tertaut.

pengaturan sesi php

Contoh: Bekerja dengan waktu sesi PHP – Tetapkan kedaluwarsa dan batasi masa pakai

Contoh penanganan waktu sesi PHP ini adalah versi yang disempurnakan dari contoh cepat di atas.

Ini menciptakan tiga variabel sesi untuk mengatur warna, bentuk dan ukuran. Ini menetapkan masa pakai untuk setiap variabel sesi PHP saat menetapkan nilai.

Kode PHP memeriksa apakah sesi itu ada. Setelah waktu tercapai, itu menghapus variabel sesi tertentu dan menghancurkannya.

file waktu sesi php

Halaman arahan untuk mengatur sesi

Halaman arahan dari contoh ini menunjukkan kontrol untuk mengatur waktu sesi PHP. Setelah dimulai, status kedaluwarsa sesi diperiksa secara berkala. Halaman ini menyertakan skrip AJAX untuk meningkatkan panggilan ke PHP untuk memeriksa sesi.

Jika waktu sesi PHP selesai, maka halaman ini akan menampilkan pemberitahuan kepada pengguna. Setelah semua sesi berakhir, maka halaman akan menghapus pemberitahuan dan meminta untuk mengatur ulang sesi.

index.php


<html>
<head>
<link href="https://phppot.com/php/php-session-time-set-unset/./assets/css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
	<div class="session"
		data-status="<?php if(!empty($_GET["status"])) { echo $_GET["status"]; } ?>">
		<div id="box">
			<h1 align="center">Set PHP session time</h1>
			<div class="text">
				<a href="set-session.php" class="btn">Reset Session</a>
			</div>

			<div id="status"></div>
		</div>
		<div id="message"></div>
	</div>
	<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
	<script src="./assets/js/session.js"></script>
</body>
</html>
   

Periksa waktu sesi PHP melalui JavaScript AJAX

Skrip ini menetapkan interval untuk memanggil skrip AJAX untuk memeriksa waktu sesi PHP. Setelah mendapat tanggapan, AJAX ini kesuksesan blok menunjukkan sesi PHP yang kedaluwarsa.

Ini memeriksa waktu sesi PHP setiap 5 detik melalui AJAX. Skrip ini menggunakan JavaScript setInterval() untuk memanggil periksaSesi() metode.

session.js


if($('.session').data('status') != "") {
    var interval;
    interval=setInterval(checkSession, 5000);
    $("#status").text("Checking session expiration status...");
}
function checkSession(){
    $.ajax({
        url:"check-session.php",
        method:"POST",
        success:function(response){
            if(response!=""){
                if(response == -1){
                    $("#status").hide();
                    clearInterval(interval);
                    window.location.href="https://phppot.com/php/php-session-time-set-unset/index.php";
                }
    	        else{
                    $("#message").append(response);
                }
            }
       }
    });
};

Setel waktu sesi PHP yang tidak disetel

Di bagian ini, ini menunjukkan dua file PHP untuk mengatur dan menghapus waktu sesi PHP.

Itu set-session.php dipanggil saat mengklik kontrol UI di halaman arahan. Ini mengatur warna, bentuk dan ukuran dalam sesi PHP.

Setiap array sesi adalah array asosiatif multi-dimensi. Ini memiliki rincian waktu sesi PHP yang ditetapkan, masa pakai dan nilai.

Sesi set-time dan lifetime digunakan untuk menghitung kedaluwarsa sesi.

set-session.php


<?php
if (! isset($_SESSION)) {
    session_start();
}
$currentTime = time();
$_SESSION['color'] = array(
    "value" => "blue",
    "time" => $currentTime,
    "lifetime" => 3
);
$_SESSION['shape'] = array(
    "value" => "circle",
    "time" => $currentTime,
    "lifetime" => 5
);
$_SESSION['size'] = array(
    "value" => "big",
    "time" => $currentTime,
    "lifetime" => 10
);
header("Location: index.php?status=starts");
exit();
?>
   

Kode ini mengembalikan teks respons setelah sesi kedaluwarsa.

Ini memvalidasi sesi kedaluwarsa dengan membandingkan waktu yang tersisa dan masa pakai sesi PHP.

Setelah ketiga sesi kedaluwarsa, kode ini mengembalikan -1. Saat menerima -1, panggilan balik AJAX berhenti melacak dengan menghapus interval.

check-session.php


<?php
if (! isset($_SESSION)) {
    session_start();
}

if (! isset($_SESSION['color']) && (! isset($_SESSION['shape'])) && (! isset($_SESSION['size']))) {
    print - 1;
}
if (isset($_SESSION['color'])) {
    $sessionTimeColor = $_SESSION['color']['time'];
    $sessionLifeTimeColor = $_SESSION['color']['lifetime'];
    if ((time() - $sessionTimeColor) > $sessionLifeTimeColor) {
        unset($_SESSION['color']);
        print '<div class="response-text"><span>Color Session Expired</span></div>';
    } 
}

if (isset($_SESSION['shape'])) {
    $sessionTimeShape = $_SESSION['shape']['time'];
    $sessionLifeTimeShape = $_SESSION['shape']['lifetime'];
    if ((time() - $sessionTimeShape) > $sessionLifeTimeShape) {
        unset($_SESSION['shape']);
        print '<div class="response-text"><span>Shape Session Expired</span></div>';
    } 
}

if (isset($_SESSION['size'])) {
    $sessionTimeSize = $_SESSION['size']['time'];
    $sessionLifeTimeSize = $_SESSION['size']['lifetime'];
    if ((time() - $sessionTimeSize) > $sessionLifeTimeSize) {
        unset($_SESSION['size']);
        print '<div class="response-text"><span>Size Session Expired</span></div>';
    }
}
exit();
?>
   

Kesimpulan

Jadi kita telah belajar bagaimana mengatur waktu sesi PHP melalui pemrograman. Artikel ini menjelaskan konfigurasi PHP untuk mengatur masa pakai sesi maksimal.

Saya harap contoh ini membantu membuat kode Anda sendiri untuk mengelola sesi dan waktu PHP.
Unduh

Kembali ke Atas



Source link

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.


Notice: ob_end_flush(): failed to send buffer of zlib output compression (0) in /home/breatgem/widiyanata.com/wp-includes/functions.php on line 4755