Kaji dengan mendalam prinsip pembangunan asas PHP: pengurusan sesi dan kaedah pengekalan keadaan
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.
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, "/");
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"];
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>
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();
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>
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();
Kod di atas akan memulakan sesi menggunakan ID sesi yang diluluskan dalam medan borang tersembunyi.
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";
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"];
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();
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 );
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();
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);
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);
Seterusnya, apabila log masuk, kami boleh menyimpan maklumat keadaan pengguna dalam pelayan cache. Contohnya:
$memcached->set("user:" . $username, $userinfo, 3600);
在后续的请求中,我们可以通过查询缓存服务器来获取和更新用户的状态信息。例如:
$userinfo = $memcached->get("user:" . $username);
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!