Kuki PHP

Kuki PHP

Kuki sering digunakan untuk mengenal pasti pengguna.

Apakah itu kuki?

Kuki dijana oleh pelayan dan dihantar kepada Ejen Pengguna (biasanya penyemak imbas akan menyimpan kunci/nilai kuki ke fail teks dalam direktori tertentu dan meminta tapak web yang sama pada masa akan datang). Kuki dihantar ke pelayan (dengan syarat penyemak imbas ditetapkan untuk membolehkan kuki). Nama dan nilai kuki boleh ditakrifkan oleh pembangun bahagian pelayan, supaya pelayan boleh mengetahui sama ada pengguna adalah pengguna yang sah dan sama ada dia perlu log masuk semula, dsb. Pelayan boleh menetapkan atau membaca maklumat yang terkandung dalam Kuki untuk mengekalkan status sesi pengguna dengan pelayan.

Fungsi setcookie() digunakan untuk menetapkan kuki.

Nota: Fungsi setcookie() mesti diletakkan sebelum teg <html>

Sintaks

setcookie(nama, nilai, tamat tempoh, laluan, domain);

Contoh 1

Dalam contoh berikut, kami akan mencipta nama Jadilah kuki untuk "pengguna" dan berikannya nilai "runoob". Kami juga menyatakan bahawa kuki ini tamat tempoh selepas satu jam:

<?php
setcookie("user", "runoob", time()+3600);
?>
<html>
.....

Nota: Nilai kuki dikodkan URL secara automatik apabila menghantar kuki dan dinyahkod secara automatik apabila diambil. (Untuk mengelakkan pengekodan URL, gunakan setrawcookie() sebaliknya.)

Contoh 2

Anda juga boleh menetapkan masa tamat tempoh kuki dengan cara lain. Ini mungkin lebih mudah daripada menggunakan saat.

<?php
$expire=time()+60*60*24*30;
setcookie("user", "runoob", $expire);
?>
<html>
.....

Dalam contoh di atas, masa tamat tempoh ditetapkan kepada satu bulan (60 saat * 60 minit * 24 jam * 30 hari).

Konfigurasi dan aplikasi kuki

Setcookie(nama rentetan, nilai rentetan, int tamat tempoh, laluan rentetan, domain rentetan, tidak selamat); ialah pengecam nama pembolehubah kuki Anda boleh menggunakannya untuk merujuk

pembolehubah kuki dalam PHP sama seperti menggunakan nama pembolehubah biasa. nilai ialah nilai awal pembolehubah kuki, tamat tempoh mewakili masa kesahihan laluan kuki mewakili laluan yang berkaitan bagi domain kuki mewakili tapak web pembolehubah kuki hanya sah apabila https dihantar dengan selamat;

SetCookie("Cookie", "cookievalue",time()+3600, "/forum", ".365shequ.com", 1);

Nama, mestilah Nilai, mesti jadi milisaat masa()+3600=1 jam Simpan laluan Simpan HTTPS domain

Kuki Baca PHP

Gunakan tatasusunan $_COOKIE pembolehubah global super untuk membaca klien semasa Cipta fail PHP baru set_cookie.php untuk kuki yang disimpan dalam

dan kodnya ialah

print_r($_COOKIE);

echo $_COOKIE['foo'];

Semak sama ada kuki telah berjaya ditetapkan


Tetapkan masa tamat tempoh untuk kuki

Parameter ketiga ialah cap waktu unix

0 nilai lalai, ia akan tamat tempoh apabila anda menutup penyemak imbas

time() + 86400 satu hari

setcookie('foo', 'a', time() + 86400 );

Selepas menetapkan Sila tutup penyemak imbas, buka penyemak imbas sekali lagi dan lawati untuk menyemak sama ada kuki itu wujud

Tetapkan laluan untuk kuki

setcookie('bar', 'b', time() + 86400, '/uploads');

• Sila uji sama ada halaman PHP bernama bar boleh dibaca dalam / direktori Cookie

· Sila uji sama ada Cookie bernama foo boleh dibaca dalam halaman PHP di bawah /uploads Sila buat subdirektori lain dan uji sama ada halaman PHP dalam subdirektori boleh membacanya

Setelah Laluan ditetapkan, kuki di bawah Laluan hanya boleh dibaca oleh halaman di bawah Laluan

ditetapkan untuk nama Domain kuki

setcookie('key', 'val', time() + 86400, '/uploads', '.your.domain');

Tetapkan domain kepada berita tidak boleh dibaca oleh halaman di bawah sports.365jia.cn, dan sebaliknya

Jika anda mahu semua nama domain peringkat kedua berkongsi kuki, anda perlu menetapkan domain kepada .php.cn

Isu sekatan kuki

Banyak penyemak imbas mempunyai had pada bilangan kuki yang boleh ditetapkan oleh tapak web sesetengah penyemak imbas malah mengehadkannya kepada 30

Pelayar juga mempunyai sekatan pada saiz kuki, yang biasanya tidak boleh melebihi saiz 4K

Isu keselamatan kuki

Jika anda tidak menutup komputer anda selepas melayari Internet di kafe Internet, orang lain yang menggunakan komputer anda boleh melihat sejarah semua tapak web yang anda lawati dan kandungan kuki yang disimpan oleh tapak web itu berbahaya jika data penting (nama pengguna, kata laluan, nombor kad, nombor telefon bimbit, nombor ID...) disimpan dalam kuki.

Oleh itu, data penting tidak boleh disimpan dalam kuki Jika ia mesti disimpan, ia mesti bergantung pada pelayan

Langkah berjaga-jaga kuki

Komputer yang berbeza. tidak boleh berkongsi Kuki

Pelayar yang berbeza pada komputer yang sama tidak boleh berkongsi Kuki

Pelayar yang sama dan nama domain yang berbeza masih tidak boleh berkongsi Kuki

Malah pelayar yang sama, Kuki dengan berbeza laluan di bawah nama domain yang sama tidak boleh dikongsi

Bagaimana untuk mendapatkan semula nilai Cookie?

Pembolehubah $_COOKIE PHP digunakan untuk mendapatkan semula nilai kuki.

Dalam contoh berikut, kami mendapatkan semula nilai kuki bernama "pengguna" dan memaparkannya pada halaman:

<?php
// 输出 cookie 值
echo $_COOKIE["user"];
// 查看所有 cookie
print_r($_COOKIE);
?>

Dalam contoh berikut, kami menggunakan fungsi isset() untuk mengesahkan sama ada kuki telah ditetapkan:

<html>
<head>
<meta charset="utf-8">
<title> php中文网(php.cn)</title>
</head>
<body>
<?php
if (isset($_COOKIE["user"]))
         echo "欢迎 " . $_COOKIE["user"] . "!<br>";
else
         echo "普通访客!<br>";
?>
</body>
</html>

Bagaimana untuk memadam kuki?

Apabila memadamkan kuki, anda harus menukar tarikh tamat tempoh kepada satu titik masa pada masa lalu.

Instance yang dipadamkan:

<?php
// 设置 cookie 过期时间为过去 1 小时
setcookie("user", "", time()-3600);
?>

Apakah yang perlu saya lakukan jika penyemak imbas saya tidak menyokong kuki?

Jika aplikasi anda perlu berurusan dengan penyemak imbas yang tidak menyokong kuki, maka anda perlu menggunakan kaedah lain untuk menghantar maklumat antara halaman dalam aplikasi anda. Satu cara adalah dengan menghantar data melalui borang (borang dan input pengguna diliputi dalam bab sebelumnya dalam tutorial ini).

Borang berikut menyerahkan input pengguna kepada "welcome.php" apabila pengguna mengklik butang "Serah":

<html>
<head>
<meta charset="utf-8">
<title> php中文网(php.cn)</title>
</head>
<body>
<form action="welcome.php" method="post">
名字: <input type="text" name="name">
年龄: <input type="text" name="age">
<input type="submit">
</form>
</body>
</html>

Dapatkan nilai dalam fail "welcome.php", seperti ditunjukkan di bawah:

<html>
<head>
<meta charset="utf-8">
<title>php中文网(php.cn)</title>
</head>
<body>
欢迎 <?php echo $_POST["name"]; ?>.<br>
你 <?php echo $_POST["age"]; ?> 岁了。
</body>
</html>

Separuh rentak

Kesilapan yang sering dilakukan dalam pembangunan sebenar ialah mendapatkan data terus melalui $_COOKIE selepas setcookie

setcookie ('foo', 1);

print_r($_COOKIE);
echo $_COOKIE['foo'];

Dalam kes di atas, adalah mustahil untuk mendapatkan kuki hanya set adalah masalah yang disebut dalam tajuk kami

Prinsipnya sangat mudah sebenarnya disimpan ke pelayar Hanya Selepas halaman semasa dikembalikan ke pelayar nilai setcookie akan disimpan dalam penyemak imbas Apabila halaman dilawati untuk kali kedua, PHP boleh membaca data dalam Kuki pelayar

dan $_COOKIE Data dibawa dari klien ke pelayan setiap kali halaman diminta

Inilah sebabnya ia ditetapkan pada masa itu dan tidak boleh diambil pada masa itu

Salah satu cara untuk menyelesaikan masalah adalah dengan menyimpannya Selepas nilai, program menyegarkan semula halaman serta-merta

Meneruskan pembelajaran
||
<?php // 设置 cookie 过期时间为过去 1 小时 setcookie("user", "", time()-3600); ?>
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!