Bagaimana untuk menangani isu ketidaksahihan Kuki dan Sesi dalam pembangunan bahasa PHP?

WBOY
Lepaskan: 2023-06-10 12:58:01
asal
1241 orang telah melayarinya

Dengan perkembangan Internet, aplikasi tapak web semakin menggunakan Kuki dan Sesi untuk menyimpan status log masuk pengguna, maklumat troli beli-belah dan data lain. Walau bagaimanapun, disebabkan ketidakstabilan rangkaian, tetapan penyemak imbas dan sebab lain, Kuki dan Sesi sering menghadapi masalah kegagalan. Artikel ini akan memperkenalkan cara menangani isu ketidaksahihan Kuki dan Sesi dalam pembangunan bahasa PHP.

  1. Masalah ketidaksahihan kuki

Kuki ialah fail data kecil yang disimpan di sebelah penyemak imbas web, yang boleh memindahkan data antara berbilang halaman. Secara umumnya, terdapat dua cara untuk kuki tamat tempoh iaitu tamat tempoh dan pemadaman oleh pengguna.

Dalam PHP, menetapkan parameter masa tamat tempoh kuki boleh mengawal masa tamat tempoh kuki. Contohnya, kod sampel berikut menetapkan kuki bernama "nama pengguna" dengan masa tamat tempoh 1 jam:

// 设置Cookie过期时间为1小时
setcookie('username', 'Tom', time() + 3600);
Salin selepas log masuk

Apabila kuki tamat tempoh, penyemak imbas akan memadamkan kuki ini secara automatik. Pada masa ini, tatasusunan $_COOKIE tidak akan mengandungi maklumat Kuki ini lagi.

Selain itu, pengguna boleh memadamkan kuki secara manual melalui tetapan penyemak imbas. Dalam kes ini, ia juga akan menyebabkan tatasusunan $_COOKIE tidak lagi mengandungi maklumat kuki.

Untuk mengelakkan kesan tamat tempoh kuki, kita harus terlebih dahulu menentukan sama ada kuki itu wujud dan sama ada ia telah tamat tempoh sebelum menggunakannya. Contohnya, kod sampel berikut menentukan sama ada Kuki "nama pengguna" wujud, dan jika wujud, mengeluarkan nilai kuki:

if(isset($_COOKIE['username'])){
    echo '欢迎你,'.$_COOKIE['username'];
}else{
    echo '请先登录';
}
Salin selepas log masuk
  1. Masalah ketidaksahihan sesi

Sesi ialah sejenis mekanisme penyimpanan data sebelah pelayan Web A yang digunakan untuk menyimpan keadaan sesi pengguna. Apabila pengguna melawati tapak web, pelayan memberikan ID Sesi yang unik kepada setiap pengguna dan menyimpan ID Sesi dalam kuki dan menyerahkannya kepada penyemak imbas. Apabila penyemak imbas menghantar permintaan sekali lagi, ia akan membawa kuki ini dan pelayan menentukan status sesi pengguna berdasarkan ID Sesi.

Berbeza dengan Kuki, terdapat dua cara utama untuk Sesi tamat tempoh, iaitu tamat tempoh Sesi sebelah pelayan dan penutupan sebelah penyemak imbas menyebabkan ID Sesi menjadi tidak sah.

Anda boleh mengawal masa tamat Sesi melalui tetapan ini, seperti:

// 设置Session过期时间为1小时
ini_set("session.gc_maxlifetime", 3600);
session_start();
Salin selepas log masuk

Apabila Sesi tamat tempoh, anda boleh memusnahkan Sesi pengguna semasa melalui fungsi seperti unset($_SESSION) atau session_destroy() data.

Walau bagaimanapun, menutup penyemak imbas atau pengguna menutup tab penyemak imbas akan menyebabkan ID Sesi menjadi tidak sah. Untuk menyelesaikan masalah ini, kami boleh menggunakan kaedah berikut:

(1) Gunakan kaedah menyegarkan halaman secara kerap untuk mengekalkan status Sesi.

(2) Gunakan js untuk menghantar permintaan ajax dengan kerap dan mengekalkan status Sesi.

Contohnya,
Kod JS:

// 定时发送ajax请求
setInterval(function(){
    $.get("keepSessionAlive.php");
}, 300000); // 每隔5分钟发送一次请求
Salin selepas log masuk

Kod PHP (keepSessionAlive.php):

<?php
session_start();
Salin selepas log masuk

Ia akan dicetuskan secara automatik apabila pengguna tidak melakukan sebarang operasi untuk tempoh masa Permintaan dihantar secara tetap untuk mengekalkan kesahihan ID Sesi.

  1. Ringkasan

Apabila menggunakan Kuki dan Sesi, anda perlu memberi perhatian kepada pengendalian isu pembatalan untuk mengelakkan kesan yang tidak perlu pada aplikasi. Anda boleh mengekalkan status Kuki dan Sesi dengan menetapkan masa tamat tempoh dan menghantar permintaan dengan kerap. Pada masa yang sama, penyelesaian yang sesuai perlu dipilih berdasarkan keperluan dan keadaan khusus permohonan.

Atas ialah kandungan terperinci Bagaimana untuk menangani isu ketidaksahihan Kuki dan Sesi dalam pembangunan bahasa PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan