Kajian mendalam tentang prinsip pembangunan asas PHP: pengurusan sesi dan kaedah pengekalan keadaan

PHPz
Lepaskan: 2023-09-08 13:34:01
asal
1376 orang telah melayarinya

Kajian mendalam tentang prinsip pembangunan asas PHP: pengurusan sesi dan kaedah pengekalan keadaan

Kaji dengan mendalam prinsip pembangunan asas PHP: pengurusan sesi dan kaedah pengekalan keadaan

  1. Kata Pengantar

Dalam pembangunan web moden, pengurusan sesi dan pengekalan keadaan adalah bahagian yang sangat penting. Sama ada penyelenggaraan status log masuk pengguna atau penyelenggaraan troli beli-belah dan status lain, pengurusan sesi dan teknologi penyelenggaraan status diperlukan. Dalam pembangunan asas PHP, kami perlu memahami prinsip dan kaedah pengurusan sesi dan pengekalan keadaan untuk mereka bentuk dan menyesuaikan aplikasi web kami dengan lebih baik.

  1. Asas Pengurusan Sesi

Sesi merujuk kepada proses interaksi antara klien dan pelayan. Dalam PHP, sesi digunakan untuk menyimpan dan mengekalkan maklumat keadaan pengguna. PHP menyediakan mekanisme pengurusan sesi yang berbeza, termasuk kuki, penulisan semula URL, medan borang tersembunyi, dsb. Yang paling biasa digunakan ialah mekanisme kuki.

2.1 Pengurusan Sesi Kuki

Kuki ialah mekanisme untuk menyimpan data pada bahagian klien, yang boleh menyimpan data dalam penyemak imbas pengguna. Dalam PHP, kita boleh menetapkan kuki dengan menggunakan fungsi setcookie(). Berikut ialah contoh mudah:

setcookie("username", "john", time() + 3600, "/");
Salin selepas log masuk

Kod di atas akan mencipta kuki bernama "nama pengguna" dan menetapkan nilainya kepada "john". Parameter ketiga ialah masa tamat tempoh kuki Di sini ia ditetapkan kepada masa semasa + 3600 saat, iaitu kuki akan tamat tempoh dalam satu jam. Parameter terakhir ialah skop kuki Menetapkannya kepada "/" bermakna kuki digunakan untuk keseluruhan tapak web.

Untuk mendapatkan nilai Cookie, anda boleh menggunakan tatasusunan $_COOKIE. Contohnya:

echo $_COOKIE["username"];
Salin selepas log masuk

Kod di atas akan mengeluarkan nilai bernama "nama pengguna" dalam kuki.

2.2 Penghantaran ID sesi

Apabila menggunakan pengurusan sesi kuki, anda perlu memberi perhatian kepada penghantaran ID sesi. Biasanya, ID sesi disimpan pada klien dalam bentuk kuki. Apabila pengguna membuat permintaan seterusnya, ID sesi dihantar secara automatik ke pelayan supaya pelayan boleh terus mengekalkan keadaan sesi.

Walau bagaimanapun, dalam beberapa kes, penyemak imbas pengguna mungkin melumpuhkan kuki, yang akan menyebabkan ID sesi tidak dihantar seperti biasa. Untuk menyelesaikan masalah ini, PHP menyediakan dua alternatif: menulis semula URL dan menyembunyikan medan borang.

2.2.1 Penulisan Semula URL

Penulisan semula URL ialah cara untuk lulus ID sesi sebagai sebahagian daripada parameter URL. Contohnya:

<a href="page.php?session_id=<?php echo session_id(); ?>">Link</a>
Salin selepas log masuk

Kod di atas menghantar ID sesi sebagai parameter pertanyaan dengan nama parameter "session_id".

Di bahagian pelayan, anda boleh menggunakan fungsi session_id() untuk menghantar ID sesi dalam URL dan menetapkan ID sesi melalui fungsi session_id(). Contohnya:

session_id($_GET["session_id"]);
session_start();
Salin selepas log masuk

Kod di atas akan memulakan sesi menggunakan ID sesi yang dihantar dalam URL.

2.2.2 Medan borang tersembunyi

Medan borang tersembunyi ialah cara untuk lulus ID sesi dalam bentuk medan tersembunyi. Contohnya:

<form action="page.php" method="post">
  <input type="hidden" name="session_id" value="<?php echo session_id(); ?>">
  <input type="submit" value="Submit">
</form>
Salin selepas log masuk

Kod di atas menghantar ID sesi sebagai medan tersembunyi ke medan borang bernama "session_id".

Di bahagian pelayan, anda boleh menggunakan tatasusunan $_POST untuk mendapatkan ID sesi yang diluluskan oleh medan borang tersembunyi, dan menetapkan ID sesi melalui fungsi session_id(). Contohnya:

session_id($_POST["session_id"]);
session_start();
Salin selepas log masuk

Kod di atas akan memulakan sesi menggunakan ID sesi yang diluluskan dalam medan borang tersembunyi.

  1. Kaedah pengekalan negeri

Selain pengurusan sesi, pengekalan negeri juga merupakan bahagian yang sangat penting. PHP menyediakan pelbagai kaedah pengekalan keadaan, termasuk Sesi, pangkalan data dan cache. Mari perkenalkan setiap kaedah ini di bawah.

3.1 Penyelenggaraan keadaan sesi

Session ialah kaedah bahagian pelayan untuk menyimpan keadaan, yang boleh digunakan untuk mengekalkan status log masuk pengguna dan maklumat lain. Dalam PHP, kita boleh menggunakan tatasusunan $_SESSION untuk menyimpan dan mengakses Sesi. Contohnya:

$_SESSION["username"] = "john";
Salin selepas log masuk

Kod di atas akan mencipta Sesi bernama "nama pengguna" dan menetapkan nilainya kepada "john". Untuk mendapatkan nilai Sesi, anda boleh menggunakan tatasusunan $_SESSION:

echo $_SESSION["username"];
Salin selepas log masuk

Kod di atas akan mengeluarkan nilai bernama "nama pengguna" dalam Sesi.

Apabila menggunakan ketekunan keadaan Sesi, anda perlu memastikan untuk menggunakan fungsi session_start() dalam setiap skrip untuk memulakan sesi. Contohnya:

session_start();
Salin selepas log masuk

3.2 Kegigihan keadaan pangkalan data

Kegigihan keadaan pangkalan data ialah kaedah menyimpan maklumat keadaan dalam pangkalan data dan boleh digunakan untuk pengurusan keadaan merentas sesi dan merentas permintaan. Dalam PHP, kita boleh menggunakan MySQL, SQLite dan pangkalan data lain untuk mengekalkan keadaan pangkalan data.

Pertama, kita perlu mencipta jadual untuk menyimpan maklumat status. Sebagai contoh, berikut ialah pernyataan penciptaan untuk jadual bernama "pengguna":

CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  username VARCHAR(50) NOT NULL,
  password VARCHAR(50) NOT NULL
);
Salin selepas log masuk

Seterusnya, selepas log masuk, kami boleh menyimpan maklumat status pengguna dalam pangkalan data. Contohnya:

// 连接数据库
$pdo = new PDO("mysql:host=localhost;dbname=test", "username", "password");

// 插入状态信息
$stmt = $pdo->prepare("INSERT INTO users (username, password) VALUES (:username, :password)");
$stmt->bindParam(":username", $username);
$stmt->bindParam(":password", $password);
$stmt->execute();
Salin selepas log masuk

Dalam permintaan seterusnya, kami boleh mendapatkan dan mengemas kini maklumat status pengguna dengan menanyakan pangkalan data. Contohnya:

// 查询状态信息
$stmt = $pdo->prepare("SELECT * FROM users WHERE username = :username");
$stmt->bindParam(":username", $username);
$stmt->execute();
$user = $stmt->fetch(PDO::FETCH_ASSOC);
Salin selepas log masuk

3.3 Kegigihan keadaan cache

Kegigihan keadaan cache ialah kaedah menyimpan maklumat keadaan dalam pelayan cache, yang boleh digunakan untuk meningkatkan kelajuan akses dan mengurangkan bilangan akses pangkalan data. Dalam PHP, kita boleh menggunakan pelayan cache seperti Memcached dan Redis untuk mengekalkan keadaan cache.

Pertama, kita perlu menyambung ke pelayan cache. Sebagai contoh, berikut adalah contoh sambungan menggunakan Memcached:

$memcached = new Memcached();
$memcached->addServer("localhost", 11211);
Salin selepas log masuk

Seterusnya, apabila log masuk, kami boleh menyimpan maklumat keadaan pengguna dalam pelayan cache. Contohnya:

$memcached->set("user:" . $username, $userinfo, 3600);
Salin selepas log masuk

在后续的请求中,我们可以通过查询缓存服务器来获取和更新用户的状态信息。例如:

$userinfo = $memcached->get("user:" . $username);
Salin selepas log masuk

Atas ialah kandungan terperinci Kajian mendalam tentang prinsip pembangunan asas PHP: pengurusan sesi dan kaedah pengekalan keadaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!